Você pode usar uma
left outer join
para pegar todos os usuários, então, destrua qualquer usuário onde houver um grupo anexado. A consulta a seguir fornecerá apenas a lista de usuários em que não há grupo disponível:select
u.*
from
users u
left outer join groupusers g on
u.userid = g.userid
where
g.userid is null
Se você quiser encontrar todos os usuários que não estão em um grupo específico:
select
u.*
from
users u
left outer join groupusers g on
u.userid = g.userid
and g.groupid = @GroupID
where
g.userid is null
Isso somente excluir os usuários desse grupo específico. Todos os outros usuários serão devolvidos. Isso ocorre porque o
groupid
condição foi feita no join
cláusula, que limita as linhas unidas, não retornadas, que é o que o where
cláusula faz.