「MERGE (SQL)」の版間の差分
表示
削除された内容 追加された内容
m →脚注 |
|||
4行目: | 4行目: | ||
[[SQL:2003]] において標準SQLに導入された構文を以下に示す。 |
[[SQL:2003]] において標準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]
脚注
- ^ “MERGE”. Oracle Database SQL言語リファレンス. 2009年9月23日閲覧。
- ^ “MERGE ステートメント”. DB2 Version 9 for Linux, UNIX, and Windows. 2009年9月23日閲覧。
- ^ “MERGE (Transact-SQL)”. SQL Server 2008 オンライン ブック. 2009年9月23日閲覧。
- ^ “MERGE”. Firebird 2.1 Language Reference Update. 2009年9月23日閲覧。
- ^ “INSERT ... ON DUPLICATE KEY UPDATE Syntax”. MySQL 5.1 Reference Manual. 2014年12月8日閲覧。
- ^ “REPLACE Syntax”. MySQL 5.1 Reference Manual. 2014年12月8日閲覧。
- ^ “INSERT”. PostgreSQL 9.6.5文書. 2019年2月8日閲覧。
- ^ “INSERT”. SQL As Understood By SQLite. 2009年9月23日閲覧。