当我使用in
关键字进行查询时,如下所示:
select * from users_roles where user_grp in ('SUPPORTER', 'MEMBER', 'VIP');
在这个SQL中,我要说的是选择那些用户组的 one 中的用户。所以这是一个OR逻辑。
但是我可以将OR逻辑更改为AND以便我选择列表中所有或项目中的记录吗?
表结构只是使用一对多关系,其中一个用户可以在多个组中,因此users_roles
表中可能有多个同一用户的行具有不同的{{1 }}。
那么,我如何编写SQL以便选择所有用户组中的用户?
答案 0 :(得分:1)
您需要应用分组依据,然后选择在应用过滤器后出现三次的数据
select user_id -- or user_name, whatever
from users
where user_grp in ('SUPPORTER', 'MEMBER', 'VIP')
group by user_id
having count(distinct user_grp) = 3;