我正在尝试查找查询来解决我的问题:

我的数据库中有这样的内容:

mysql - SQL查询丢弃具有多个条目的记录-LMLPHP

我需要一个查询来选择所有具有角色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 byhaving

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/

10-11 02:08