【问题标题】:How to filter SQL join to records that have multiple matches only如何过滤 SQL 连接以仅具有多个匹配项的记录
【发布时间】:2013-10-02 00:46:18
【问题描述】:

假设用户可以在不同的组织中担任多个角色。

这些表格是:

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

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

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

【问题讨论】:

标签: sql tsql join


【解决方案1】:

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

SELECT [User_Id] 
FROM USERROLE UR
WHERE Role_Id IN (1,2,3)
GROUP BY [User_Id] 
HAVING COUNT(DISTINCT Role_Id) = 3

【讨论】:

  • 宾果游戏!正是我所追求的。
猜你喜欢
  • 2021-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-23
  • 1970-01-01
  • 1970-01-01
  • 2016-10-25
  • 1970-01-01
相关资源
最近更新 更多