ワークテーブルを利用して複数レコードを更新する方法。
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