SELECT name from SUPPLIER
WHERE code =
(SELECT code FROM STOCK GROUP BY code HAVING COUNT(DISTINCT code)>=3);
我正在使用SQLPLUS。當查詢返回單個結果時,我得到我正在尋找的答案。然而,當它返回多行我得到這個錯誤信息:單行子查詢(Oracle SQL)
ORA-01427:單行子查詢返回不止一行
SELECT name from SUPPLIER
WHERE code =
(SELECT code FROM STOCK GROUP BY code HAVING COUNT(DISTINCT code)>=3);
我正在使用SQLPLUS。當查詢返回單個結果時,我得到我正在尋找的答案。然而,當它返回多行我得到這個錯誤信息:單行子查詢(Oracle SQL)
ORA-01427:單行子查詢返回不止一行
有兩種可能性:一件事是修子查詢,以便它永遠只返回一行,另一種可能是使用IN
或ANY
:
SELECT name from SUPPLIER
WHERE code in (SELECT code FROM STOCK GROUP BY code HAVING COUNT(DISTINCT code)>=3);
使用IN工作完美,謝謝! –
在你的子查詢單行操作,正在返回了多行,這將不會是true
(即=
只能比較一個值)。
使用group by
關鍵字,多行將被返回,這就是錯誤發生的原因。
解決方法是使用IN
。
如果子查詢返回多個行,您希望查詢返回什麼內容? – usr