gpt4 book ai didi

sql - 查询不在特定组中的用户? (想使用 EXCEPT 但似乎 MySQL 不支持它)

转载 作者:行者123 更新时间:2023-11-29 02:06:30 24 4
gpt4 key购买 nike

我在用户和组之间建立了多对多关系:

CREATE TABLE IF NOT EXISTS `SecurityIdentifiers` (
`Guid` char(36) NOT NULL,
PRIMARY KEY (`Guid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `CaseIdUsers` (
`Sid` char(36) NOT NULL,
`Acl` int(11) NOT NULL,
`FirstName` varchar(45) NOT NULL,
`LastName` varchar(45) NOT NULL,
`CaseID` varchar(8) NOT NULL,
PRIMARY KEY (`Sid`),
UNIQUE KEY `CaseID_UNIQUE` (`CaseID`),
KEY `fk_CaseIDUsers_AccessControlLists1` (`Acl`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `GroupMembers` (
`User` char(36) NOT NULL,
`Group` char(36) NOT NULL,
PRIMARY KEY (`User`,`Group`),
KEY `fk_Groups_has_SecurityIdentifiers_SecurityIdentifiers1` (`User`),
KEY `fk_Groups_has_SecurityIdentifiers_Groups1` (`Group`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `Groups` (
`Sid` char(36) NOT NULL,
`Acl` int(11) NOT NULL,
`Name` varchar(45) NOT NULL,
`Description` varchar(255) NOT NULL,
PRIMARY KEY (`Sid`),
UNIQUE KEY `Name_UNIQUE` (`Name`),
KEY `fk_Groups_Access Control Lists1` (`Acl`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

我需要找到不属于特定组的所有用户。我想做类似的事情:

SELECT CaseId FROM CaseIdUsers
EXCEPT
SELECT CaseId FROM CaseIdUsers
JOIN GroupMembers ON GroupMembers.User = CaseIdUsers.Sid
JOIN Groups ON GroupMembers.Group = Groups.Sid
WHERE Groups.Name = 'MyGroupName'

但是 MySQL 不支持 EXCEPT。我现在该怎么办?

最佳答案

您可以使用 NOT IN() , 或 <> 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'
)

或者,您可以使用 LEFT JOINGROUP 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

关于sql - 查询不在特定组中的用户? (想使用 EXCEPT 但似乎 MySQL 不支持它),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4997093/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com