【发布时间】:2020-10-20 18:38:25
【问题描述】:
select *
from employee
where controllingoffice in (
Iif(1=1, (select id from controllingoffice), (select id from controllingoffice where OwnerId=4))
)
消息 512,第 16 级,状态 1,第 1 行 子查询返回超过 1 个值。当子查询跟随 =、!=、、>= 或子查询用作表达式时,这是不允许的。
注意:两个子查询都返回多于 1 行
【问题讨论】:
-
请熟悉“如何提出正确的问题”并提供一些有用的示例数据。无论如何,您可能想尝试如下修改查询:
SELECT e.* FROM employee AS e INNER JOIN controllingoffice AS c ON c.id = e.controllingoffice AND c.id = CASE WHEN 1=1 THEN c.id ELSE 4 END. -
第二个查询不是第一个查询的子集吗?无论哪种方式,您都可以在最外层使用
or或两个查询中的union。 -
等等,既然 1 总是等于 1,那么 IIF 不是总是返回第一个参数吗?我根本没有得到那个代码示例。
-
@hsn 仅供参考,如果您想回答您需要与离开 cmets 的人互动的问题。
标签: sql-server subquery