SELECT name from SUPPLIER
WHERE code =
(SELECT code FROM STOCK GROUP BY code HAVING COUNT(DISTINCT code)>=3);
我正在使用SQLPLUS。当查询返回单个结果时,我得到了我正在寻找的答案。但是,当它返回多行时,我收到以下错误消息:
ORA-01427:单行子查询返回多行
答案 0 :(得分:0)
有两种可能性:一种方法是修复子查询,使其始终只返回一行,另一种可能是使用IN
或ANY
:
SELECT name from SUPPLIER
WHERE code in (SELECT code FROM STOCK GROUP BY code HAVING COUNT(DISTINCT code)>=3);
答案 1 :(得分:0)
在单行操作的子查询中,返回的行不是true
的多行(即=
只能比较一个值)。
使用group by
关键字,会返回多行,这就是错误发生的原因。
解决方案是使用IN
。