我想从我的数据库中选择所有电子邮件以 @gmail.com
结尾的用户,这些用户还不在 groupID
4 的组中。
问题是我的 user_to_group
表如下所示:
userID | groupID
--------------------
1 | 5
1 | 4
1 | 3
2 | 3
2 | 6
groupID
为 4 的用户被排除在外,但因为他们也在其他组中,所以无论如何都会被选中。在此示例中,我只需要具有 userID
2 的用户。
是否可以排除组 4 中的用户而不考虑其他组?
SELECT * FROM wcf13_user user_table
RIGHT JOIN wcf13_user_to_group ON (wcf13_user_to_group.userID = user_table.userID && groupID != 4 )
WHERE user_table.email LIKE "%@gmail.com"
最佳答案
是的,您可以使用 EXISTS
子查询来完成:
SELECT *
FROM wcf13_user user_table u
WHERE user_table.email LIKE "%@gmail.com" -- Has a gmail account
AND NOT EXISTS ( -- Is not a member of group #4
SELECT *
FROM wcf13_user_to_group g
WHERE u.userID=g.userID AND groupID = 4
)
关于mysql - sql连接外键表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20637106/