コンテンツにスキップ

英文维基 | 中文维基 | 日文维基 | 草榴社区

「MERGE (SQL)」の版間の差分

出典: フリー百科事典『ウィキペディア(Wikipedia)』
削除された内容 追加された内容
Cewbot (会話 | 投稿記録)
m Bot作業依頼: sourceタグをsyntaxhighlightタグに置換 (Category:非推奨のsourceタグを使用しているページ) - log
4行目: 4行目:
[[SQL:2003]] において標準SQLに導入された構文を以下に示す。
[[SQL:2003]] において標準SQLに導入された構文を以下に示す。


<source lang="sql">
<syntaxhighlight lang="sql">
MERGE INTO 主表 USING 副表 ON (条件)
MERGE INTO 主表 USING 副表 ON (条件)
WHEN MATCHED THEN
WHEN MATCHED THEN
10行目: 10行目:
WHEN NOT MATCHED THEN
WHEN NOT MATCHED THEN
INSERT (列1 [, 列2 ...]) VALUES (値1 [, 値2 ...])
INSERT (列1 [, 列2 ...]) VALUES (値1 [, 値2 ...])
</syntaxhighlight>
</source>


* [[Oracle Database]] <ref>{{cite web
* [[Oracle Database]] <ref>{{cite web

2020年7月5日 (日) 23:02時点における版

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 構文を採用している。[5][6]
  • PostgreSQL は INSERT ... ON CONFLICT 構文を採用している。[7]
  • SQLite は INSERT OR REPLACE INTO および REPLACE 構文を採用している。[8]

脚注

  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. ^ INSERT ... ON DUPLICATE KEY UPDATE Syntax”. MySQL 5.1 Reference Manual. 2014年12月8日閲覧。
  6. ^ REPLACE Syntax”. MySQL 5.1 Reference Manual. 2014年12月8日閲覧。
  7. ^ INSERT”. PostgreSQL 9.6.5文書. 2019年2月8日閲覧。
  8. ^ INSERT”. SQL As Understood By SQLite. 2009年9月23日閲覧。