https://ja.wikipedia.org/wiki/MERGE_%28SQL%29
http://www.shift-the-oracle.com/sql/merge.html
これを利用すると、指定した条件に応じて挿入(INSERT)、更新(UPDATE)を実行するSQL文。俗にいうupsertが実現できる。
結果的にupsertが実現できるとは言え、イメージとしてはあくまで2つのテーブルのデータをマージするという処理になる。
更新対象テーブルに、更新データの入ったテーブルを結合して、結合できた行に対する更新と、結合できなかった行の場合の追加を行うという処理が基本となり、upsertをしたい場合は「更新データの入ったテーブル」をサブクエリで作成してやることになる。
例: MERGE INTO user_master mst USING (select 1 as id, 'name' as name) import_data imp ON ( mst.id = imp.id ) WHEN MATCHED THEN UPDATE SET name = imp.name WHEN NOT MATCHED THEN INSERT (id, name) VALUES (imp.id, imp.name);
SQL:2003 において標準SQLに導入された。
・SQLServer2008以降対応
・MERGEは9i以降対応