Możesz użyć left outer join
aby złapać wszystkich użytkowników, a następnie zdmuchnąć każdego użytkownika, do którego jest dołączona grupa. Poniższe zapytanie da ci tylko listę użytkowników, dla których nie ma żadnej grupy:
select
u.*
from
users u
left outer join groupusers g on
u.userid = g.userid
where
g.userid is null
Jeśli chcesz znaleźć wszystkich użytkowników spoza określonej grupy:
select
u.*
from
users u
left outer join groupusers g on
u.userid = g.userid
and g.groupid = @GroupID
where
g.userid is null
To będzie tylko wykluczyć użytkowników z tej konkretnej grupy. Każdy inny użytkownik zostanie zwrócony. Dzieje się tak, ponieważ groupid
warunek został wykonany w join
klauzula, która ogranicza liczbę łączonych wierszy, które nie są zwracane, czyli właśnie to jest where
klauzula.