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