我正在尝试查找查询来解决我的问题:
我的数据库中有这样的内容:
我需要一个查询来选择所有具有角色5的用户,但是如果由于某些原因他们具有任何其他角色,则应跳过这些用户
SELECT user_id FROM user_table WHERE roleid = 5 AND (roleid != 3 OR roleid != 1)
仍然返回用户64
最佳答案
我认为您正在寻找not exists
子句:
select *
from t
where roleid = 5 and
not exists (select 1
from t t2
where t2.user_id = t.user_id and t2.roleid <> 5
);
另外,如果您只是寻找此类用户,则可以使用
group by
和having
:select user_id
from t
group by user_id
having min(roleid) = max(roleid) and min(roleid) = 5;
(如果
roleid
可以是NULL
,则逻辑上需要考虑到这一点。)关于mysql - SQL查询丢弃具有多个条目的记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34427093/