MySql:如果用户具有某个角色,则将其排除

时间:2017-07-14 15:53:37

标签: mysql sql select join

SELECT distinct u.id, u.identifier, u.display_name, u.modified_time, 
u.active, r.id, r.name
FROM user u
left join user_role_mapping urm on u.id = urm.user_id
left join role r on r.id = urm.role_id 
where r.id IS NULL or r.name NOT IN ("System");

我有这个MySQL查询,只要他们没有“系统”的角色,它应该得到每个用户,这是正常的。但是,我面临的问题是,如果用户具有“系统”角色和另一个角色,则仍然会返回该用户。有任何想法吗?谢谢!

1 个答案:

答案 0 :(得分:0)

您应该选择不在用户列表中的用户的值作为系统

  select u.id, u.identifier, u.display_name, u.modified_time, 
  u.active, r.id, r.name
  FROM user u
  left join user_role_mapping urm on u.id = urm.user_id
  left join role r on r.id = urm.role_id 
  where u.id not in (

      select u.id
      FROM user u
      left join user_role_mapping urm on u.id = urm.user_id
      left join role r on r.id = urm.role_id 
      where  r.name = "System"
  )