[英]How to write a select Query inside a CASE condition in MS SQL
我有一个Sql查询。 它没有任何编译错误,但在运行时它显示
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
SELECT a.UserID FROM USERGROUPS a WHERE a.GroupID IN
(CASE WHEN @group_id IS NULL THEN (select groupid from usergroups) ELSE
CASE WHEN @group_id=0 THEN (select groupid from usergroups where userid = @userid)ELSE
@group_id END END )
提前致谢。
试试这个:
SELECT a.UserID
FROM USERGROUPS a
WHERE
(@groupid is NUll and a.GroupID IN (select groupid from usergroups))
or (@groupid = 0 and a.GroupID IN (select groupid from usergroups where (userid = @userid)))
or a.GroupID IN (@groupid)
[案例]评估的条件的列表,并返回多个可能的结果表达式中的一个 。
基本上你可以在CASE中使用SELECT,但它只需要返回一个结果而不是一个列表(这只能在运行时进行评估,这就是为什么你的查询结果正式正确但启动时失败)
如果你告诉我们更多关于你要做什么的事情,也许我可以帮你重写你的查询
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.