嗨,
看我所附的图片。我试图选择所有没有角色ID为1的用户ID。因此,我希望查询返回用户ID 6、13和15。但是,当我对此使用查询时,它也会返回用户ID 5,因为它有2个条目,其中一个条目的角色ID为3。是否有排除UserID 5的原因,因为它与RoleID为1关联?
SELECT UserID
FROM UserTable (example)
WHERE RoleID <> 1
谢谢。
答案 0 :(得分:3)
SELECT UserID
FROM UserTable (example)
WHERE UserID not in (SELECT UserID FROM UserTable (example) WHERE RoleID = 1)
首先,我们选择所有RoleID = 1的用户,然后选择他们的用户ID,然后选择不在第一个列表中的所有用户。
答案 1 :(得分:2)
不存在
select t.UserID from UserTable t
where not exists ( select 1 from UserTable t1
where t1.Userid=t.userid and Roleid=1
)
答案 2 :(得分:0)
如果只需要userId
,请使用group by
和having
:
SELECT UserID
FROM UserTable
GROUP BY UserId
HAVING SUM(CASE WHEN RoleID = 1 THEN 1 ELSE 0 END) = 0;
这会选择每个(合适的)UserId
一次-这似乎是您要的。
HAVING
子句计算的角色数为“ 1”。 = 0
说不存在。