HOME >> Tips >> SQL Server Tips >> SQL

2つの表を比較してキーが一致する行をUPDATEする(UPDATE ~ FROM)

 
文書番号:20347




「テーブルB」をSELECTした結果で「テーブルA」をUPDATEするSQLです。
2つの表「テーブルA」と「テーブルB」を比較し、キーが一致する「テーブルA」の行の値を「テーブルB」の値でUPDATEします。

【SQL】


UPDATE TABLEA
SET    TABLEA.COLUMN2 = TABLEB.COLUMN2
FROM   TABLEB
WHERE  TABLEB.KEY1 = TABLEA.KEY1

【サンプル】

「CODE」項目で比較し、「商品マスタ」のNAMEを「購入リスト」のNAMEでUPDATEします。
商品マスタ
CODE NAME PRICE
0001 りんご 100
0003 みかん 200
0004 ばなな 150
購入リスト
CODE NAME PRICE
0001 アップル 120
0002 グレープ 230
0003 オレンジ 180
0004 バナナ 160
商品マスタ
CODE NAME PRICE
0001 アップル 120
0003 オレンジ 180
0004 バナナ 160

UPDATE 商品マスタ
SET    商品マスタ.NAME = 購入リスト.NAME
FROM   購入リスト
WHERE  購入リスト.CODE = 商品マスタ.CODE

  複数の列をUPDATEする場合

UPDATE 商品マスタ
SET    商品マスタ.NAME  = 購入リスト.NAME
      ,商品マスタ.PRICE = 購入リスト.PRICE
FROM   購入リスト
WHERE  購入リスト.CODE = 商品マスタ.CODE
※FROM のテーブルは JOIN などで結合することもできます

【参考情報】

Oracle Database で同様のことをする場合
・2つの表を比較してキーが一致する行をUPDATEする(UPDATE ~ SELECT)