单个SQL查询以验证输入值

时间:2013-12-17 06:26:10

标签: sql stored-procedures

我写了一个有三个论点的存储过程

@UserID1 BIGINT 
@UserID2 BIGINT 
@UserID3 BIGINT

我想要实现的是针对表 dbo.aspnet_UsersInRoles 列ID编写单个SQL查询,以便@ UserID1,@ UserID2,@ U​​serID3出现在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。

我可以使用三个不同的查询来实现,但我没有在单个查询中获得任何线索。

1 个答案:

答案 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}}