这是来自单个表的简单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'
以下是结果。第一个查询不返回任何结果,但选择2显示特定用户的结果。第2行和第3行显示PermissionId应匹配。
对于我所要求的内容,似乎存在一些误解。最有可能是措辞如何。我期待的是为两者 PermissionID为5(一行)和7(另一行)中的每个用户获取一个UserID。
答案 0 :(得分:7)
原始查询的问题是,您要求返回PermissionId
同时等于两个值的结果 - 意味着同一行 - 这是不可能的。
但是,您可以使用UserID
和PermissionId =5
返回同时包含PermissionId =7
AND GROUP BY
的{{1}}子句:
HAVING
答案 1 :(得分:5)
好吧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
答案 2 :(得分:3)
此权限或自我加入将为您提供正确的结果,即在权限列中同时包含5 AND 7的用户。
select up.UserID
from UserPermissions up
where up.PermissionId = 5
and up.UserID in (Select userID
FROM UserPermissions up1
where up1.PermissionId = 7
)