Sie können einen left outer join
verwenden Um alle Benutzer zu erfassen, blasen Sie dann alle Benutzer weg, denen eine Gruppe zugeordnet ist. Die folgende Abfrage gibt Ihnen nur die Liste der Benutzer, für die es keine Gruppe gibt:
select
u.*
from
users u
left outer join groupusers g on
u.userid = g.userid
where
g.userid is null
Wenn Sie alle Benutzer finden möchten, die nicht in einer bestimmten Gruppe sind:
select
u.*
from
users u
left outer join groupusers g on
u.userid = g.userid
and g.groupid = @GroupID
where
g.userid is null
Dies wird nur schließen Sie die Benutzer in dieser bestimmten Gruppe aus. Jeder andere Benutzer wird zurückgegeben. Das liegt daran, dass die groupid
Bedingung wurde im join
ausgeführt -Klausel, die die Anzahl der verknüpften Zeilen einschränkt, nicht zurückgegeben, was der where
ist Klausel tut.