HOME >> Tips >> Oracle Tips >> SQL

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

 
文書番号:20263




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

【SQL】


UPDATE TABLEA
SET    TABLEA.COLUMN2 = (SELECT TABLEB.COLUMN2
                         FROM   TABLEB
                         WHERE  TABLEB.COLUMN1 = TABLEA.COLUMN1
                         )

【サンプル】

「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 = (SELECT 購入リスト.NAME
                          FROM   購入リスト
                          WHERE  購入リスト.CODE = 商品マスタ.CODE
                         );

  複数の列をUPDATEする場合

UPDATE 商品マスタ
SET   (商品マスタ.NAME,商品マスタ.PRICE)
     = (SELECT 購入リスト.NAME
              ,購入リスト.PRICE
        FROM   購入リスト
        WHERE  購入リスト.CODE = 商品マスタ.CODE
       )