[英]Subquery returned more than 1 value. This is not permitted when the subquery follows … or when the subquery is used as an expression
[英]Subquery returned more than 1 value. This is not permitted when the subquery follows>= or when the subquery is used as an expression
子查询返回了1个以上的值错误。 如何解决呢?
SELECT top 1 address
FROM tblAdr A
WHERE A.pkey=
(SELECT b.pkey FROM tblMachine b WHERE b.ADDRESS_PKEY IS NULL
)
子查询(括号中的数量)返回多个pkey
值,这是不允许的,因为需要单个标量值。 如果你满足于检查是否pkey
在tblAdr
匹配任何的子查询中的值,那么你可以使用WHERE A.pkey IN (...)
如下所示:
SELECT TOP 1 address
FROM tblAdr A
WHERE A.pkey IN (SELECT b.pkey FROM tblMachine b WHERE b.ADDRESS_PKEY IS NULL)
将=
更改为IN
select top 1 address from tblAdr A where A.pkey in (select b.pkey from tblMachine b where b.ADDRESS_PKEY is null)
这应该可以修复错误,但是查询的逻辑可能存在缺陷。 您仅排在后面( select top 1
),但是您没有定义应该首先选择哪一行(没有order by
子句)。
使用IN
代替=
因为您的子查询返回多个匹配的行。
SELECT top 1 address
FROM tblAdr A
WHERE A.pkey IN
(SELECT b.pkey FROM tblMachine b WHERE b.ADDRESS_PKEY IS NULL
);
另外,请始终将热门查询与order by一起使用。
此子查询“从tblMachine b中选择b.pkey,其中b.ADDRESS_PKEY为null”返回多个值,您无法将其与“ =”运算符进行比较,但您需要此try in子句
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.