MySQL选择在其他表中没有特定值的行

时间:2013-07-05 10:33:43

标签: mysql sql join group-by

表:

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

我想选择所有没有area_id的用户,在权限表中输入5。

2 个答案:

答案 0 :(得分:3)

在表之间进行左连接,检查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

答案 1 :(得分:-1)

SELECT user.* FROM USER 
INNER JOIN permissions ON 
(user.id=permissions.user_id AND permissions.area_id=0)

希望它会对你有所帮助。