mysql只拉用户没有的行

时间:2018-07-16 12:49:52

标签: php mysql pdo

我的用户组系统有一个包含以下字段的表: 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的用户。

1 个答案:

答案 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

您需要编辑问题以使其更清楚