Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Consulta para usuários que não estão em um grupo específico? (Queria usar EXCEPT, mas parece que o MySQL não suporta)


Você pode usar um NOT IN() , ou um <> QUALQUER ()
SELECT CaseId
FROM CaseIdUsers
WHERE CaseID NOT IN (
  SELECT CaseId 
  FROM CaseIdUsers
    JOIN GroupMembers ON GroupMembers.User = CaseIdUsers.Sid
    JOIN Groups ON GroupMembers.Group = Groups.Sid
  WHERE Groups.Name = 'MyGroupName'
)

Como alternativa, você pode usar um LEFT JOIN com um GROUP BY
SELECT CaseId 
FROM CaseIdUsers
  LEFT JOIN GroupMembers ON GroupMembers.User = CaseIdUsers.Sid
  LEFT JOIN Groups ON GroupMembers.Group = Groups.Sid
    AND Groups.Name = 'MyGroupName'
HAVING COUNT(Groups.Sid) = 0