MERGE (SQL)

MERGEステートメントは、条件に応じてUPDATEまたはINSERTを実行する。UPDATEとINSERTを組み合わせた操作を行うことから、UPSERTという別名を持つ。

標準の構文

SQL:2003において標準SQLに導入された構文を以下に示す。

 MERGE INTO 主表 USING 副表 ON (条件)   WHEN MATCHED THEN     UPDATE SET 1 = 1 [, 2 = 2 ...]   WHEN NOT MATCHED THEN     INSERT (1 [, 2 ...]) VALUES (1 [, 2 ...])

以下のデータベースなどでサポートされている。

非標準の構文

データベース製品の中には、標準とは異なる構文で同様の機能を提供しているものもある。

  • MySQLINSERT ... ON DUPLICATE KEY UPDATEおよびREPLACE構文を採用している[6][7]
  • PostgreSQLINSERT ... ON CONFLICT構文を採用している[8]
  • SQLiteINSERT OR REPLACE INTOおよびREPLACE構文を採用している[9]

脚注