【问题标题】:MySQL select rows which not having specific value in other table [closed]MySQL选择在其他表中没有特定值的行[关闭]
【发布时间】:2013-07-05 10:33:43
【问题描述】:

表格:

   users (id, name)
   permissions (id, area_id, user_id)

我想选择所有没有 area_id 的用户,比如权限表中的 5。

【问题讨论】:

    标签: mysql sql join group-by


    【解决方案1】:

    在表之间进行左连接,在 ON 子句中检查相关的 area_id(因此,如果没有匹配的记录,左表行仍然被带回),但是在 WHERE 子句中检查没有匹配的记录.

    SELECT a.*
    FROM users a
    LEFT OUTER JOIN permissions b
    ON a.id = b.user_id
    AND b.area_id = 5
    WHERE b.id IS NULL
    

    【讨论】:

    • 它非常适合我!谢谢!!!
    【解决方案2】:
    SELECT user.* FROM USER 
    INNER JOIN permissions ON 
    (user.id=permissions.user_id AND permissions.area_id=0)
    

    希望对您有所帮助。

    【讨论】:

    • 并非所有用户都有权限
    猜你喜欢
    • 2012-06-13
    • 1970-01-01
    • 2018-10-24
    • 1970-01-01
    • 2018-03-18
    • 1970-01-01
    • 2020-06-08
    • 1970-01-01
    • 2021-07-26
    相关资源
    最近更新 更多