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