• ベストアンサー

oracle8 マッチングして更新する方法

テーブルAのaが テーブルBのaと同じとき テーブルAのa,b,c,d,eを テーブルCのa,b,c,d,eに書き換える (全てのaは主キーです。各データは複数です) ということはひとつのSQLで可能ですか。 よろしくお願い致します。

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

  • ベストアンサー
  • takopon
  • ベストアンサー率69% (27/39)
回答No.1

update文では副問い合わせが使えますので、 update A set (a,b,c,d,e) = (select a,b,c,d,e from C where C.a = A.a) where A.a = (select a from B) というSQLが書けます。 さらに、aがキー項目なときは、 update (select * from A,B where A.a = B.a) set (A.a,A.b,A.c,A.d,A.e) = (select a,b,c,d,e from C where C.a = A.a) where A.a = (select a from B) てな具合にひとまとめに書くことが出来ます。 こんなんでよろしいでしょうかね。

その他の回答 (1)

  • takopon
  • ベストアンサー率69% (27/39)
回答No.2

すいません、aがキー項目なときのSQLが間違ってることに書き込んだ直後に気が付きました。 正しくは update (select * from A,B where A.a = B.a) set (A.a,A.b,A.c,A.d,A.e) = (select a,b,c,d,e from C where C.a = A.a) だけでOKなはずです。

関連するQ&A