2017-07-14 36 views
1
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查询,应该让每个用户,只要他们没有“系统”,这是工作正常的角色。但是,我面临的问题是,如果用户具有“系统”角色和另一角色,用户仍然被退回。有任何想法吗?谢谢!MySql:排除用户,如果他们有一定的作用

回答

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

真棒感谢用户的价值!这工作完美。 –

+0

不需要在子查询中加入用户,urm.user_id足够好:-) – Turo

+0

@Ture ..你确定..?子查询返回的u.id不在... – scaisEdge

相关问题