SQL MERGE文

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以降対応