从子查询中排除记录

时间:2015-02-11 02:13:03

标签: mysql

我有一个查询需要从另一个表中删除特定记录。 这是我的查询。 以下代码选择用户所在的所有组的所有应用信息。

SELECT   app_name,
         ifnull(max(priv_access), 'N') as priv_access,
         ifnull(max(priv_insert),'N') as priv_insert,
         ifnull(max(priv_delete),'N') as priv_delete,
         ifnull(max(priv_update),'N') as priv_update,
         ifnull(max(priv_export),'N') as priv_export,
         ifnull(max(priv_print),'N') as priv_print
      FROM prismreporting_sec_groups_apps
      WHERE group_id IN
          (SELECT
           group_id
       FROM
           prismreporting_sec_users_groups 
       WHERE
           login = 'kdriscoll')
       group by app_name

我现在想要为该用户排除另一个表中的所有记录。 我有两个名为login和app_name的字段 表的名称是prismreporting_sec_removeuser_apps 这是我试图使用的选择

select app_name from prismreporting_sec_removeuser_apps where login = 'kdriscoll'

我真的不知道用什么方式(如果有的话)我能做到这一点...... 有人可以帮忙吗?

提前致谢

凯文

1 个答案:

答案 0 :(得分:0)

你可以使用     不在子句中:

SELECT   app_name,
     ifnull(max(priv_access), 'N') as priv_access,
     ifnull(max(priv_insert),'N') as priv_insert,
     ifnull(max(priv_delete),'N') as priv_delete,
     ifnull(max(priv_update),'N') as priv_update,
     ifnull(max(priv_export),'N') as priv_export,
     ifnull(max(priv_print),'N') as priv_print
  FROM prismreporting_sec_groups_apps
  WHERE group_id IN
      (SELECT
       group_id
   FROM
       prismreporting_sec_users_groups 
   WHERE
       login = 'kdriscoll'
and app_name not in 
(select app_name from prismreporting_sec_removeuser_apps 
where login = 'kdriscoll')
   group by app_name