SELECT name from SUPPLIER
WHERE code =
(SELECT code FROM STOCK GROUP BY code HAVING COUNT(DISTINCT code)>=3);
私はSQLPLUSを使用しています。クエリが単一の結果を返すと、探している答えが得られます。ただし、複数の行が返されると、次のエラー メッセージが表示されます。
ORA-01427: 単一行の副問合せが複数の行を返します
単一行操作のサブクエリでは、返されませんtrue
(つまり=
、1つの値しか比較できない)複数の行が返されます。
キーワードを使用するgroup by
と、複数の行が返されるため、エラーが発生します。
解決策はを使用することIN
です。
2 つの可能性があります。1 つはサブクエリを修復して常に 1 行のみを返すようにすること、もう 1 つはIN
orを使用することANY
です。
SELECT name from SUPPLIER
WHERE code in (SELECT code FROM STOCK GROUP BY code HAVING COUNT(DISTINCT code)>=3);