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