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

@確かですか?サブクエリが返されていないu.idを返します。 – scaisEdge

関連する問題