MERGE - 対象となる表に行を追加・更新する -

SQL-92/99   Oracle DB2 SQL Server MySQL PostgreSQL Access

MERGE INTO 対象となる表名 USING 対象元となる表名
ON 条件式
WHEN MATCHED THEN
更新処理
WHEN NOT MATCHED THEN
追加処理

 MERGE 文は、条件式に一致した行は対象元の値で対象となる表の値を更新し、条件式に一致しなかった行は対象となる表に行を追加します。

-- 【説明】
-- 次の SQL 文は、「T_01_3_BK」表と「T_01_3」表の「ID」列が一致する「100101」、「100102」、「100103」の行は更新、「T_01_3_BK」表に存在しない「100104」、「100105」の行を追加します。

MERGE INTO T_01_3_BK USING T_01_3
 ON T_01_3_BK.ID = T_01_3.ID
 WHEN MATCHED THEN
  UPDATE SET T_01_3_BK.SALE = T_01_3.SALE
 WHEN NOT MATCHED THEN
  INSERT INTO VALUES (T_01_3.ID, T_01_3.B1_CODE, T_01_3.SALE, T_01_3.BONUS);


IDB1_CODESALEBONUS
0901118901012007.4
09012189030 9006.5
10010123010 1005.0
10010223010 5205.8
10010333020 2505.1
1001044701010007.4
1001050103018007.8

参考表

T_01_3

IDB1_CODESALEBONUS
10010123010 1005.0
10010223010 5205.8
10010333020 2505.1
1001044701010007.4
1001050103018007.8

T_01_3_BK

IDB1_CODESALEBONUS
0901118901012007.4
09012189030 9006.5
10010123010 1005.0
10010223010 2205.8
10010333020 1505.1