从表A中选择具有表A中的多个条件的条目

时间:2018-01-13 16:07:12

标签: mysql database

我一直在尝试使用连接,子查询连接,而不是存在子句来包围我的大脑,并且我一直未能提出产生正确结果的查询。

表A - PRIMARY id(与此问题无关)

id | campaign_id | user_id
--------------------------
1         1           1
2         1           2
3         0           3
4         2           3
5         1           2

表B - UNIQUE campaign_id + user_id

campaign_id | user_id | admin
-----------------------------
     1           1        1
     1           2        0
     1           3        0
     2           3        0

我需要做的是找到表B的实例,其中用户不再在表A中具有与表B中的campaign_id相对应的条目。表A是主要内容,它们可以具有表A的多个条目在活动中出现。表B是一个成员表,表明他们是广告系列的成员,以及他们是否是管理员。此外,它们可以作为管理员在表B中输入,但在表A中没有条目,因此查询必须检查admin = 0。

在示例条目中,表B中的无效条目为campaign_id 1,user_id 3

1 个答案:

答案 0 :(得分:1)

使用外部联接,然后在where子句中声明外部联接表的user_id为空:

select    tblB.*
from      tblB
left join tblA 
       on tblA.campaign_id = tblB.campaign_id
      and tblA.user_id = tblB.user_id
where     tblB.admin = 0
      and tblA.user_id is null