• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Oracle8iのUPDATE文)

Oracle8iのUPDATE文でのエラーについて

このQ&Aのポイント
  • Oracle8iのUPDATE文を使用して表Aと表Bの列8を上書きしようとしていますが、ORA-01427エラーが発生しています。
  • エラーメッセージによると、単一行副問い合わせで2つ以上の行が返されているようです。
  • このエラーからの抜け道を見つけられず、解決策を探しています。アドバイスをお願いします。

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

  • ベストアンサー
  • thatsthat
  • ベストアンサー率55% (15/27)
回答No.3

ただの投稿の書き間違いだとすると、 表B.列1がユニークである以上、エラーは出なさそうですね・・・。 とりあえず、私だったらこう進めます。 (1)SET直後の副問い合わせに"AND ROWNUM=1"を付ければ  エラーがなくなる事を確認=間違いなくここが原因だと特定 (2)UPDATE文をなるべくコピペで編集して、  表A.列1の値と、(select 表B.列8~)のcountとを出力するSELECTに変えて実行 (3)countが>1の表A.列1の値で、select 表B.列8~の部分を実行して結果を見る このくらいで何か分かる予定です(^^; ローダのdirectモードで表Bに重複データを入れたら、こうなる・・かも・・ あとはSQLの微妙な間違いで、意図した物になっていない、とか そのくらいしか私には見当付かないです・・・。

rararaigyo
質問者

お礼

この表だけできないので、何かミスをしてしまったのかもしれません。アドバイスは早速試させて頂きます。ありがとうござました

その他の回答 (2)

回答No.2

UPDATE 表A SET 表A.列8 = (SELECT 表B.列8 FROM 表B WHERE 表A.列1 = 表B.列2)                ←列2??? WHERE 表A.列1 =ANY(SELECT 表B.列1 FROM 表B)

rararaigyo
質問者

補足

書き間違いでした、申し訳ありません。

  • thatsthat
  • ベストアンサー率55% (15/27)
回答No.1

ただの書き間違いかと思ったのですが、 他におかしな所も探せなかったのでひとまず・・・ SET直後、 > 表A.列8 = (SELECT 表B.列8 FROM 表B WHERE 表A.列1 = 表B.列2) この最後の「表B.列2」は「表B.列1」ですよね?

rararaigyo
質問者

補足

失礼しました。 表A.列8 = (SELECT 表B.列8 FROM 表B WHERE 表A.列1 = 表B.列1) が正しい一つ目の副問い合わせの内容です。

関連するQ&A