单行子查询(Oracle SQL)

时间:2012-11-24 19:31:09

标签: sql oracle

SELECT name from SUPPLIER
WHERE code =
(SELECT code FROM STOCK GROUP BY code HAVING COUNT(DISTINCT code)>=3);

我正在使用SQLPLUS。当查询返回单个结果时,我得到了我正在寻找的答案。但是,当它返回多行时,我收到以下错误消息:

  

ORA-01427:单行子查询返回多行

2 个答案:

答案 0 :(得分:0)

有两种可能性:一种方法是修复子查询,使其始终只返回一行,另一种可能是使用INANY

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