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

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

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


関連キーワード





SQL実行例の説明(1)

T1_SAMPLE_BK表とT1_SAMPLE表を条件式で比較した結果、一致する場合には行を更新、一致しない場合には行を追加します。


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


SQL実行の結果(1-1)

・T1_SAMPLE_BK表とT1_SAMPLE表のIDが一致する100101, 100102, 100103の行は更新、T1_SAMPLE_BK表に存在しないID100104, 100105の行を追加します。


IDB1_CODESALEBONUS
10010123010 1005.0
10010223010 5205.8
10010333020 2505.1
1001044701010007.4
1001050103018007.8

T1_SAMPLE


IDB1_CODESALEBONUS
0901118901012007.4
09012189030 9006.5
10010123010 1005.0
10010223010 2205.8
10010333020 1505.1

T1_SAMPLE_BK

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