【问题标题】:Query Across Join Exclusively查询跨加入独占
【发布时间】:2022-07-01 22:51:56
【问题描述】:

我正在尝试编写一个查询来确定我公司中谁拥有我指定的角色,而没有其他人。

这些表是用户、用户角色和角色。下面是一个(不正确的)示例,我尝试了几种不同的方法,但是当它们只包含角色时,它们似乎都返回了一个用户。

select U.Username from User U
    join UserRole UR on U.UserID = UR.UserID
    join Role R on UR.RoleID = R.RoleID
where R.RoleName in ('Role1', 'Role2', 'Role3')

我觉得我缺少一些简单的东西。但是,在网上做研究后,我找不到类似的场景。

【问题讨论】:

  • 对我来说,您的查询看起来不错。你能解释一下你为什么不满意吗
  • 该查询应该是排他的,我试图在我的问题中解释(很差)。我希望用户只拥有建议的角色,而不是更多。

标签: sql sql-server tsql


【解决方案1】:

如果我理解您的要求:

select U.Username 
from User U
join UserRole UR on U.UserID = UR.UserID
join Role R on UR.RoleID = R.RoleID
where R.RoleName in ('Role1', 'Role2', 'Role3')
GROUP BY U.Username 
HAVING COUNT(R.RoleName)=3

以上内容未经测试,但应该为您提供足够的提示来解决您的问题

【讨论】:

    猜你喜欢
    • 2015-12-07
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    • 1970-01-01
    • 2014-04-15
    • 2015-10-31
    • 1970-01-01
    相关资源
    最近更新 更多