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

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

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

UPDATE文に副問合せを利用しているところがポイントです。

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

前提条件

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

副問合せを使ったUPDATE

UPDATE
    (
      SELECT
          CUS.ID      AS ID
         ,CUS.NAME    AS OLD_NAME
         ,CUS.POST_CD AS OLD_POST_CD
         ,WK.NAME     AS NEW_NAME
         ,WK.POST_CD  AS NEW_POST_CD
      FROM
          TB_CUSTOMER CUS
              INNER JOIN WK_PATCH_DATA WK ON CUS.ID = WK.ID
    ) VW
SET
    VW.OLD_NAME    = VW.NEW_NAME
   ,VW.OLD_POST_CD = VW_NEW_POST_CD
;

更新結果

TB_CUSTOMERのデータ

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