2012-11-24 95 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

有兩種可能性:一件事是修子查詢,以便它永遠只返回一行,另一種可能是使用INANY

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

使用IN工作完美,謝謝! –

0

在你的子查詢單行操作,正在返回了多行,這將不會是true(即=只能比較一個值)。

使用group by關鍵字,多行將被返回,這就是錯誤發生的原因。

解決方法是使用IN