2015年6月2日火曜日

SQL ServerでSelectした結果でUpdateするSQL

SQL Serverで、Selectした結果でUpdateするためには以下のようなクエリを書きます。

update T1
set T1.C1 = T2.C2
from TABLE1 T1
inner join TABLE2 T2
on T1.KEY = T2.KEY

TABLE2をSelectした結果のC2フィールドの値で、TABLE1のC1フィールドを更新します。
この時、二つのテーブルをKEYフィールドで連結して、どのレコードを対応付けるかを指定しています。
もしも使えるようなら、このままコピペして、TABLE1、TABLE2、KEY、C1、C2あたりを書き換えて使ってもいいと思います。

inner joinではなくleft outer joinを使うとTABLE1のすべての行を更新しますが、TABLE2に該当するレコードがないときはNULLになります。