サイトアイコン こじりふぁ

UPDATE文で複数レコードを更新・3回目

ワークテーブルを利用して複数レコードを更新する方法。

WK_PATCH_DATAテーブルに格納しているキー情報を基にTB_CUSTOMERテーブルの各レコードを更新しています。

EXISTSを使ってUPDATEしているところがポイントです。

前提条件

TB_CUSTOMERのデータ

ID  NAME        POST_CD
---------------
1   テスト太郎   111-0001
2   テスト次郎   111-0002
3   テスト三郎   111-0003

WK_PATCH_DATAのデータ

ID  NAME          POST_CD
---------------
1   サンプル太郎   222-0001
2   サンプル次郎   222-0002
3   サンプル三郎   222-0003

EXISTSを使ったUPDATE

UPDATE
    TB_CUSTOMER CUS
SET
    (CUS.NAME, CUS.POST_CD) = (
       SELECT
           WRK.NAME
          ,WRK.POST_CD
       FROM
           WK_PATCH_DATA WRK
       WHERE
           WRK.ID = CUS.ID
    )
WHERE
    EXISTS (
        SELECT
            *
        FROM
            WK_PATCH_DATA WRK
        WHERE
            WRK.ID = CUS.ID
    )
;

更新結果

TB_CUSTOMER

ID  NAME          POST_CD
---------------
1   サンプル太郎   222-0001
2   サンプル次郎   222-0002
3   サンプル三郎   222-0003