Mic*_*oya -6 sql t-sql sql-server
这是来自单个表的简单where子句.问题是我应该得到任何结果.AND是必要的,因为必须满足这两个条件.第二张表显示应满足条件.
select *
from UserPermissions up
where up.PermissionId = 5 and up.PermissionId = 7
select *
from UserPermissions up
where up.UserId = '40376a15-8b4b-43c0-a174-67f935ec7e8e'
Run Code Online (Sandbox Code Playgroud)
结果如下.第一个查询不返回任何结果,但选择2显示特定用户的结果.第2行和第3行显示PermissionId应该匹配.

对我所问的内容似乎存在一些误解.最有可能是措辞如何.我很期待是得到谁拥有每个用户一个用户名都的5(一行)和7 PermissionID(另一行).
您的原始查询的问题是您要求返回PermissionId同时等于两个值的结果- 意味着同一行 - 这是不可能的.
但是,您可以通过使用with 子句返回UserID具有PermissionId =5 AND PermissionId =7的两个:GROUP BYHAVING
SELECT userId
FROM UserPermissions up
WHERE PermissionId IN (5, 7)
GROUP BY userId
HAVING COUNT(DISTINCT PermissionId) = 2
Run Code Online (Sandbox Code Playgroud)
好吧OP这样做对你有什么用吗?
select
a.UserId
from UserPermissions as a
inner join userpermissions as b
on a.userID = b.userID
and a.permissionID = 5
and b.permissionID = 7
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
104 次 |
| 最近记录: |