Oracle でテーブル結合してMERGEするサンプル

2021年11月18日

環境
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します

Oracle

Posted by arkgame