我写了一个有三个论点的存储过程
@UserID1 BIGINT
@UserID2 BIGINT
@UserID3 BIGINT
我想要实现的是针对表 dbo.aspnet_UsersInRoles 列ID编写单个SQL查询,以便@ UserID1,@ UserID2,@ UserID3出现在dbo.aspnet_UsersInRoles的ID列中。< / p>
例如,我在变量中收到了三个值,我想确认它们是Id列的一部分。即表的ID列的值为1,2,3,4,5,6,7,8,9,10,UserID1为2,UserID2为5,UserID3为7.所以它应该为true,否则为false。
我可以使用三个不同的查询来实现,但我没有在单个查询中获得任何线索。
答案 0 :(得分:2)
你应该能够使用这样的东西:
SELECT CASE WHEN SUM( CASE
WHEN @UserID1 = ID THEN 1
WHEN @UserID2 = ID THEN 1
WHEN @UserID3 = ID THEN 1
ELSE 0
END ) = 3 THEN 1 ELSE 0 AS [AllThree]
FROM aspnet_UsersInRoles
(未经测试的代码)
...假设ID列是唯一的。如果所有三个ID都在表中,那么你应该得到一个总和值3.这将允许你在一次通过中处理表,但是你没有得到索引查找的优点,就像你进入{ {3}}