我对SQL有疑问。 以下内容:
我有2个表,一个用户和一个角色表。 用户可以拥有多个角色。默认用户只有一个角色(id = 1),admin 2(id = 1& 2)。
现在我想只返回没有拥有admin-role(id = 2)的用户。但是根据我当前的查询,我收到了所有用户,因为管理员也拥有roleID 1(默认用户)。
所以我希望任何人都能解决我的问题。
我当前的查询:
SELECT * FROM (SELECT u.userID AS uID, u.firstName, u.lastName, r.roleID AS rID
FROM User AS u INNER JOIN roleUser AS ru INNER JOIN Role AS r)
WHERE rID = 1 //--> dont know to handle this..
答案 0 :(得分:3)
获取没有关联管理员角色的所有用户
试试这个:
SELECT * FROM Users u
WHERE NOT EXISTS(
SELECT 'ADMIN'
FROM RoleUser ru
WHERE ru.rID = 2
AND ru.userID = u.userID)
如果你想讨论Role
表:
SELECT * FROM Users u
WHERE NOT EXISTS(
SELECT 'ADMIN'
FROM RoleUser ru
JOIN Role r
ON r.roleID = ru.roleID
WHERE r.name = 'ADMIN'
AND ru.userID = u.userID)