【问题标题】:Left Join, But Exclude If Joined Table Contains Entry左连接,但如果连接的表包含条目则排除
【发布时间】:2013-10-09 13:48:51
【问题描述】:

我知道标题看似微不足道,但问题比乍一看要深一些。

我有以下 3 个表结构:

user:  id, name
group: id, name
group_members: id, idUser, idGroup

有一个group 用于 id=1 的超级管理员。

我需要选择所有属于该组的用户。然而,棘手的部分是当他们订阅超级管理员组和其他组时。我尝试了 LEFT JOIN 和 JOIN,但它们被包含在这种情况下。如果他们订阅了超级管理员组,我想从结果中排除他们,不管他们是否订阅了其他组。

【问题讨论】:

    标签: mysql sql subquery left-join inner-join


    【解决方案1】:
    SELECT * FROM user
    WHERE id NOT IN
    (SELECT idUser FROM group_members WHERE idGroup = 1)
    

    【讨论】:

      【解决方案2】:

      没有子查询

      select idUSER from group_members
      group by iduser
      having sum(if(idgroup=1,1,0))=0
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-04
        • 2021-11-10
        相关资源
        最近更新 更多