Puoi utilizzare un left outer join
per prendere tutti gli utenti, quindi, spazzare via qualsiasi utente a cui è collegato un gruppo. La seguente query ti darà solo l'elenco degli utenti in cui non è presente alcun gruppo da avere:
select
u.*
from
users u
left outer join groupusers g on
u.userid = g.userid
where
g.userid is null
Se vuoi trovare tutti gli utenti non in un particolare gruppo:
select
u.*
from
users u
left outer join groupusers g on
u.userid = g.userid
and g.groupid = @GroupID
where
g.userid is null
Questo sarà solo escludere gli utenti in quel particolare gruppo. Ogni altro utente verrà restituito. Questo perché il groupid
condizione è stata eseguita nel join
clausola, che limita le righe unite, non restituite, che è ciò che è il where
la clausola lo fa.