Oracle でテーブル結合してMERGEするサンプル
環境
Oracle 12.2.0.1.0
書式
MERGE INTO テーブル1 USING テーブル2 ON 結合条件 WHEN MATCHED THEN UPDATE構文 WHEN NOT MATCHED THEN INSERT構文;
使用例
MERGE INTO USER_TBL AA USING ( SELECT UID, ADDR, FLG FROM DEP_TBL )BB ON (AA.UID = BB.UID) -- 条件に一致(テーブル名は記述しない) WHEN MATCHED THEN UPDATE SET FLG = '更新' -- 条件に一致しない(テーブル名は記述しない) WHEN NOT MATCHED THEN INSERT (UID, ADDR, FLG ) VALUES ( BB.UID, BB.ADDR, '挿入' );
説明
テーブル: USER_TBL DEP_TBL
判定条件:テーブル「USER_TBL」の「UID」とテーブル「DEP_TBL」の「UID」の比較
条件が一致する場合は、when matched thenが実行され、テーブルUSER_TBL をupdateします
条件が一致しない場合、when not matached thenが実行され、テーブルUSER_TBLをinsertします