• ベストアンサー

別のテーブルの値でUPDATEしたいのですが

Oracle8iデータベースのSQL文で困っています。 以下のような2つの表があります。 ※表の構成は似ていますが、同じではありません。 [表A]  列1 ・・・ 主キー  列2 ・・・ 主キー  列3  列4 [表B]  列1 ・・・ 主キー  列2 ・・・ 主キー  列3  列4 表Aと表Bの主キーが一致するデータについて、 表Aを表Bの値でUPDATEしたいのですが、 どのように記述すればよいでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.3

こんにちわ。 こんな感じでどうでしょう? update 表A set (列3,列4) = (SELECT 表B.列3,表B.列4 FROM 表B WHERE 表A.列1 = 表B.列1 AND 表A.列2 = 表B.列2); ユーザ登録 (無料) が必要ですが、OTN Japan で PDF 形式のマニュアルを公開していますので、 Download しておくと便利ですょ。

参考URL:
http://otn.oracle.co.jp/
yuyu-chan
質問者

お礼

できました、ありがとうございました! OTN Japan の情報もありがとうございました。 参考にさせていただきます。

その他の回答 (2)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

Oracle8iはJoinを使えません。 副問い合わせでしかできません。 update 表A set (列3,列4) = (表B.列3,表B.列4) where (列1, 列2) in (select 表B.列1, 表B.列2 from 表B where 表A.列1 = 表B.列1 and 表A.列2 = 表B.列2) こんなかな?

yuyu-chan
質問者

お礼

ありがとうございます。 でも、「ORA-01767: UPDATE ... SET式は副問合せである必要があります」というエラーになってしまいます。

回答No.1

たぶん、こんな感じでできるのではないでしょうか。 UPDATE A JOIN B ON A.列1 = B.列1 AND A.列2 = B.列2 SET A.列3 = B.列3, A.列4 = B.列4;

yuyu-chan
質問者

お礼

ありがとうございます。 でも、「JOIN」でエラーになってしまいます。。。