gpt4 book ai didi

sql - 仅选择(至少)属于某些组的成员的用户

转载 作者:行者123 更新时间:2023-11-29 13:57:28 27 4
gpt4 key购买 nike

我一直在进行查询以获取用户列表及其各自的组。我知道了。
但是有一些限制:

  1. 如果用户只是 group5 的成员,则不应出现在列表中
  2. 如果是 group5 和其他组的成员,它应该出现在列表中

我可以获得不是 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)

例如应该出现用户 1 和 2,他们是 group1、group2 和 group5 的成员。这些用户不会出现,因为 group5,即使他们有其他组,他们也应该出现。

另一方面,user3 只是 group5 的成员,因此,该用户不会出现。

最佳答案

换句话说,您只需要至少拥有一个 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子句将这两个表达式括在括号中。运算符优先级。

关于sql - 仅选择(至少)属于某些组的成员的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28773799/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com