以下のように表示されます。
(日本語)
ORA-01427: 単一行副問合せにより2つ以上の行が戻されます
(英語)
ORA-01427: single-row subquery returns more than one row
発生パターン
このエラーは以下のような場合に発生します。
- サブクエリで、1つのデータのみ検索される想定の所に複数のデータが検索された。
- エラー例1
- SQL> select * from m_test1 where col1 = (select col99 from m_test2); select * from m_test1 where col1 = (select col99 from m_test2); * 行1でエラーが発生しました。: ORA-01427: 単一行副問合せにより2つ以上の行が戻されます
= を IN にすればエラーとはなりません。
- エラー例2
- SQL> select 'AAA', (select col1 from m_test) from dual; select 'AAA', (select col1 from m_test) from dual; * 行1でエラーが発生しました。: ORA-01427: 単一行副問合せにより2つ以上の行が戻されます
対処法
- サブクエリの検索条件を見直して1つのデータのみ返すようにSQLを修正する
- サブクエリを「=」でつないでいる箇所を「IN」に変更する
(サブクエリが複数検索されるのが正しい場合)