【问题标题】:Select entries from table B with multiple conditions from table A从表 B 中选择具有来自表 A 的多个条件的条目
【发布时间】:2018-01-14 00:13:17
【问题描述】:

我一直在尝试使用联接、子查询联接、不存在子句来解决这个问题,但我一直未能提出产生正确结果的查询。

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

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

表 B - 唯一的活动 ID+用户 ID

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

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

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

【问题讨论】:

    标签: mysql database


    【解决方案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
    

    【讨论】:

    • 是的,做到了。我知道我可以通过加入 2 个条件来做到这一点,我想我忘记了 user_id 为空。感谢您的快速答复!
    猜你喜欢
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多