• 締切済み

Update文について

UPDATEについて SELECT * FROM A_table A JOIN B_table B ON (A.code = B.code) 上のように2つのテーブルをJOINして、 AのフィールドB.dateフィールドに A.dateフィールドを代入したいのですが、 どのようなUPDATE文を書けばよろしいでしょうか?

みんなの回答

回答No.3

>#2どの >UPDATE B_table SET date = (SELECT date FROM A_table where code = B_table.code) このSQLだと、Bに該当するデータがAに無い場合、B.dateにNULLが設定されます。 WHEREで更新対象を絞るのを忘れると、悲しい結果になりかねません。 UPDATE B_table SET date = (SELECT date FROM A_table where code = B_table.code) WHERE date in (select date from A_table) とか UPDATE B_table SET date = (SELECT date FROM A_table where A_table.code = B_table.code) WHERE exists(select 1 from A_table where A_table.code = B_table.code) と書くのが良いかと。 SQLserverらしく、UPDATE ~ FROM構文の方が、効率は良いですけどね。(たぶん)

すると、全ての回答が全文表示されます。
  • root139
  • ベストアンサー率60% (488/809)
回答No.2

SET句での相関サブクエリーを使っても出来るようです。 例) ---------------------------------------------- UPDATE B_table SET date = (SELECT date FROM A_table where code = B_table.code)

参考URL:
http://www.atmarkit.co.jp/fnetwork/rensai/sql08/sql1.html
すると、全ての回答が全文表示されます。
  • 7marine
  • ベストアンサー率36% (59/160)
回答No.1

update B_table set B_table.date=A.data from A_table A JOIN B_table B ON (A.code = B.code) where ・・・ だったかな?

すると、全ての回答が全文表示されます。

関連するQ&A