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表に存在しないIDが100104, 100105の行を追加します。
ID | B1_CODE | SALE | BONUS |
---|---|---|---|
100101 | 23010 | 100 | 5.0 |
100102 | 23010 | 520 | 5.8 |
100103 | 33020 | 250 | 5.1 |
100104 | 47010 | 1000 | 7.4 |
100105 | 01030 | 1800 | 7.8 |
T1_SAMPLE
ID | B1_CODE | SALE | BONUS |
---|---|---|---|
090111 | 89010 | 1200 | 7.4 |
090121 | 89030 | 900 | 6.5 |
100101 | 23010 | 100 | 5.0 |
100102 | 23010 | 220 | 5.8 |
100103 | 33020 | 150 | 5.1 |
T1_SAMPLE_BK
ID | B1_CODE | SALE | BONUS |
---|---|---|---|
090111 | 89010 | 1200 | 7.4 |
090121 | 89030 | 900 | 6.5 |
100101 | 23010 | 100 | 5.0 |
100102 | 23010 | 520 | 5.8 |
100103 | 33020 | 250 | 5.1 |
100104 | 47010 | 1000 | 7.4 |
100105 | 01030 | 1800 | 7.8 |