我一直致力于查询以获取各自组的用户列表。
我把它盖好了。
但是有一些限制:
我可以获得不是group5成员的用户,如果他们是成员,他们就不会出现在列表中。
我的问题是group5的用户成员和其他组的成员,他们没有出现,但他们应该出现在列表中
以下是查询:
select
user_id, group_id
from
group_users
where
group_id != 5
and user_id not in (select distinct user_id
from group_users
where group_id = 5)
E.g。应该出现用户1和2,它们是group1,group2和group5的成员。那些用户不会出现因为group5,即使他们有其他组也应该出现。
另一方面,user3只是group5的成员,因此,该用户不会出现。
答案 0 :(得分:0)
换句话说,您只希望拥有至少一个group_id
<> 5
的用户:
SELECT user_id, group_id
FROM group_users gu
WHERE group_id <> 5 -- optional, might help performance
OR EXISTS ( -- just this works, too
SELECT 1 FROM group_users
WHERE user_id = gu.user_id
AND group_id <> 5
)
如果添加更多WHERE
子句,请将这两个表达式括在括号中。运算符优先级。