我一直在尝试使用连接,子查询连接,而不是存在子句来包围我的大脑,并且我一直未能提出产生正确结果的查询。
表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
答案 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