繁体   English   中英

如何在MS SQL中的CASE条件内编写select查询

[英]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)

根据MSDN

[案例]评估的条件的列表,并返回多个可能的结果表达式中的一个

基本上你可以在CASE中使用SELECT,但它只需要返回一个结果而不是一个列表(这只能在运行时进行评估,这就是为什么你的查询结果正式正确但启动时失败)

如果你告诉我们更多关于你要做什么的事情,也许我可以帮你重写你的查询

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM