Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Suche nach Benutzern, die nicht in einer bestimmten Gruppe sind? (Wollte EXCEPT verwenden, aber es scheint, dass MySQL es nicht unterstützt)

Sie können einen NOT IN() , oder ein <> ANY()

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'
)

Alternativ können Sie auch einen LEFT JOIN verwenden mit einem 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