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]

脚注

  1. MERGE”. Oracle Database SQL言語リファレンス. 2009年9月23日閲覧。
  2. MERGE ステートメント”. DB2 Version 9 for Linux, UNIX, and Windows. 2009年9月23日閲覧。
  3. MERGE (Transact-SQL)”. SQL Server 2008 オンライン ブック. 2009年9月23日閲覧。
  4. MERGE”. Firebird 2.1 Language Reference Update. 2009年9月23日閲覧。
  5. MERGE”. PostgreSQL: Documentation: 15. 2022年10月17日閲覧。
  6. INSERT ... ON DUPLICATE KEY UPDATE Syntax”. MySQL 5.1 Reference Manual. 2014年12月8日閲覧。
  7. REPLACE Syntax”. MySQL 5.1 Reference Manual. 2014年12月8日閲覧。
  8. INSERT”. PostgreSQL 9.6.5文書. 2019年2月8日閲覧。
  9. INSERT”. SQL As Understood By SQLite. 2009年9月23日閲覧。
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.