仅选择(至少)是某些组成员的用户
Posted
技术标签:
【中文标题】仅选择(至少)是某些组成员的用户【英文标题】:Select only users that are (at least) member in certain groups 【发布时间】:2015-02-27 20:35:34 【问题描述】:我一直在进行查询以获取包含各自组的用户列表。 我知道了。 但是有一些限制:
-
如果用户只是 group5 的成员,则不应出现在列表中
如果是 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 的成员,因此,该用户不会出现。
【问题讨论】:
【参考方案1】:换句话说,您只希望用户至少拥有一个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 有了更多的了解以上是关于仅选择(至少)是某些组成员的用户的主要内容,如果未能解决你的问题,请参考以下文章
c9 上的 Laravel Blade 模板仅选择性地扩展到某些页面