2012-11-24 4 views
0
SELECT name from SUPPLIER 
WHERE code = 
(SELECT code FROM STOCK GROUP BY code HAVING COUNT(DISTINCT code)>=3); 

SQLPLUS를 사용하고 있습니다. 쿼리가 단일 결과를 반환하면 내가 찾고있는 대답을 얻습니다. 더 이상의 행을 반환 할 때 그러나, 나는이 오류 메시지가 :단일 행 하위 쿼리 (Oracle SQL)

ORA-01427는

: 한 가지 복구하는 것입니다 : 단일 행 부질의가

+0

하위 쿼리가 두 개 이상의 행을 반환하면 쿼리에서 어떤 결과를 기대합니까? – usr

답변

0

이 두 가지 가능성이있다 더 하나의 행보다 반환을하지 않습니다 단일 행 작업, 여러 행이 반환되고 있습니다에 대한 귀하의 하위 쿼리에서

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

IN을 사용하여 완벽하게 작동했습니다. 감사합니다! –

0

: 항상 하나 개의 행을 반환하도록 하위 쿼리는, 다른 가능성은 IN 또는 ANY을 사용하는 것입니다(예 : =은 한 값만 비교할 수 있음).

키워드를 사용하면 여러 행이 반환되므로 오류가 발생합니다.

해결책은 IN을 사용하는 것입니다.