我的用户组系统有一个包含以下字段的表: user_id-group_id
因此,用户可以有多个组,每行一个。
我想做的是提取记录,它们的group_id为“ 6”,而 not 其中 的group_id行值为“” 9“。
我尝试过:
SELECT u.`username` FROM `users` u INNER JOIN `user_group_membership` g ON u.user_id = g.user_id WHERE g.group_id != 9 AND g.group_id = 6 ORDER BY u.`username` ASC
但是,这行不通,它仍然会吸引group_id = 9的用户。
答案 0 :(得分:1)
据我了解,您需要检索第6组的用户,而不是第9组
的用户因此您可以尝试此解决方案
SELECT u.`username`
FROM `users` u
INNER JOIN `user_group_membership` g6 ON u.user_id = g6.user_id and g6.group_id = 6
LEFT JOIN `user_group_membership` g9 ON u.user_id = g9.user_id and g9.group_id = 9
WHERE g9.group_id is null
ORDER BY u.`username` ASC
您在sql中遇到问题,因为此条件将返回组6中的所有用户,无论该用户是否在组9中或不存在
g.group_id != 9 AND g.group_id = 6
您需要编辑问题以使其更清楚