2017-07-14 42 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

相關問題