0

考虑一个场景,用户可以在不同的组织中担任多个角色。

这些表是:

USER - 有一个 Id 列
ORGANIZATION - 有一个 Id 列
ROLE - 有一个 Id 列
USERROLE - 有一个 User_Id 列、一个 Organisation_Id 列和一个 Role_Id 列

(例如,用户 Bob 可以在 ABC Inc 拥有角色 1、2 和 3,在 XYZ Plc 拥有角色 1)

您如何只返回具有角色 1、23 的用户?我不介意他们是否也有其他角色或 1、2 或 3 的倍数,但他们必须至少有 1 个角色 1、2 和 3。

4

1 回答 1

3

如果他们在哪个公司担任这些角色并不重要,那么应该这样做:

SELECT [User_Id] 
FROM USERROLE UR
WHERE Role_Id IN (1,2,3)
GROUP BY [User_Id] 
HAVING COUNT(DISTINCT Role_Id) = 3
于 2013-10-01T16:46:18.977 回答