如何在MS SQL中的CASE条件内编写select查询
我有一个Sql查询。它没有任何编译错误,但在运行时显示如何在MS SQL中的CASE条件内编写select查询,sql,sql-server,Sql,Sql Server,我有一个Sql查询。它没有任何编译错误,但在运行时显示 子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时。 SELECT a.UserID FROM USERGROUPS a WHERE a.GroupID IN (CASE WHEN @group_id IS NULL THEN (select groupid from usergroups) ELSE CASE WHEN @gro
子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时。
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,但它只需返回一个结果,而不必返回列表(这是一种只能在运行时进行计算的结果,这就是为什么查询结果在形式上正确,但在启动时失败的原因)
如果您能告诉我们更多关于您正在尝试做的事情,也许我可以帮助您重写您的查询请尝试以下操作:
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)