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查询,只要每个用户不具有“系统”角色,它就应该可以使每个用户正常工作。但是,我面临的问题是,如果用户具有“系统”角色和另一个角色,则仍在返回该用户。有任何想法吗?谢谢!

最佳答案

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

  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"
  )

关于mysql - MySql:如果用户具有特定角色,则将其排除,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45107125/

10-09 00:26
查看更多