DBAtlas · データベース運用アトラス

ORA-01427: single-row subquery returns more than one row(単一行副クエリが複数行を返した)

Oracle

意味

1 行を返すことが期待される副クエリが複数行を返した。例えば等価 (=) 比較の右辺の副クエリが複数の値を生成した。

原因

= や代入が期待される箇所での複数行を返す副クエリ、十分に絞り込まれていない WHERE 条件、相関での一意でない一致、SELECT リスト内のスカラー副クエリが複数行を返す。

対処方法

副クエリが 1 行を返すよう絞り込む (追加の WHERE、一意キー)。本当に複数の値が想定されるなら = の代わりに IN を使う: WHERE id IN (SELECT id FROM ...)。または副クエリに集計 (MAX、MIN) を追加するか、ROWNUM = 1 で 1 行に絞る。まず副クエリを単独で実行し、返される行数を確認する。

DBAtlas で開く →

同じデータベースの他の項目