- ベストアンサー
別のテーブルの値でUPDATEしたいのですが
Oracle8iデータベースのSQL文で困っています。 以下のような2つの表があります。 ※表の構成は似ていますが、同じではありません。 [表A] 列1 ・・・ 主キー 列2 ・・・ 主キー 列3 列4 [表B] 列1 ・・・ 主キー 列2 ・・・ 主キー 列3 列4 表Aと表Bの主キーが一致するデータについて、 表Aを表Bの値でUPDATEしたいのですが、 どのように記述すればよいでしょうか? よろしくお願いします。
- みんなの回答 (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/
その他の回答 (2)
- taka_tetsu
- ベストアンサー率65% (1020/1553)
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) こんなかな?
お礼
ありがとうございます。 でも、「ORA-01767: UPDATE ... SET式は副問合せである必要があります」というエラーになってしまいます。
- tsukasa-12r
- ベストアンサー率65% (358/549)
たぶん、こんな感じでできるのではないでしょうか。 UPDATE A JOIN B ON A.列1 = B.列1 AND A.列2 = B.列2 SET A.列3 = B.列3, A.列4 = B.列4;
お礼
ありがとうございます。 でも、「JOIN」でエラーになってしまいます。。。
お礼
できました、ありがとうございました! OTN Japan の情報もありがとうございました。 参考にさせていただきます。