• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:単一行副問合せにより2つ以上の行が返されます。エラーになります。)

単一行副問合せにより2つ以上の行が返されるエラーの解決方法

このQ&Aのポイント
  • 単一行副問合せにより2つ以上の行が返されるエラーが発生し、SQLの実行ができません。このエラーが発生する原因や解決方法について解説します。
  • table1の特定の列に、table2の特定の列の値を追加・変更するためのSQLを作成しました。しかし、特定の条件が合致する複数の行が存在するため、エラーが発生しました。このエラーの解決方法について詳しく説明します。
  • table1とtable2の特定の列を比較し、条件に合致する行の特定の列の値を変更するためのSQLを作成しました。しかし、単一行副問合せにより2つ以上の行が返されるため、エラーが発生しました。このエラーを回避する方法について解説します。

質問者が選んだベストアンサー

  • ベストアンサー
  • saneppie
  • ベストアンサー率66% (18/27)
回答No.2

No.1のかたの通りなのですが、 まずは、「table2のcol03が3、table2のcol05が5」で、 col6が同一の行が複数あるはずなので、どのcol06が犯人か探します。 select col06, count(*) from table2 t2 where t2.col03 = 3 and t2.col05 = 5 group by col06 having count(*) > 1 その後、 select col06, * from table2 t2 where t2.col03 = 3 and t2.col05 = 5 and t2.col06 = (探し出したcol06の値) で内容を確認したあと、最終的には 余分なレコードを削除するのか、一意になる他の条件を追加するのか、 重複行にしかならないという限定つきで、DISTINCTしちゃう(下記)とかを判断するのですが、 …ここまで書かなくてもよかったかしら? update table1 set (col01,col02) = (select DISTINCT col01,col02 from table2 t2,table1 t1 where t2.col03 = 3 and t2.col05 = 5 and t2.col06 = t1.col06) where t1.col06 in (select col06 from table2);

090303kan
質問者

お礼

ありがとうございます。 お礼が遅くなり申し訳ありません。 大変参考になりました。

その他の回答 (1)

  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.1

select col01,col02 from table2 t2,table1 t1 where t2.col03 = 3 and t2.col05 = 5 and t2.col06 = t1.col06 で2行以上の結果が出るのが問題です。それは、あなたの作ったSQLがそうなっているからです。

090303kan
質問者

お礼

ありがとうございます。 お礼が遅くなり申し訳ありません。 絞りこまれてでてくると思いこんでいました。

関連するQ&A