コンテンツにスキップ

MERGE (SQL)

出典: フリー百科事典『ウィキペディア(Wikipedia)』

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 ...])

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

非標準の構文

[編集]

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

  • MySQLはINSERT ... ON DUPLICATE KEY UPDATEおよびREPLACE構文を採用している[6][7]。
  • PostgreSQLはINSERT ... ON CONFLICT構文を採用している[8]。
  • SQLiteはINSERT 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日閲覧。