SQL MERGE 用法
时间: 2023-08-21 17:15:55 浏览: 146
使用BULK COLLECT, MERGE 语句提高sql执行效率
SQL MERGE 语句用于将一个表中的数据合并到另一个表中。它包含三个子句:源表查询子句(用于指定源表数据的查询条件)、目标表名称和 ON 子句(用于指定用于匹配源和目标表记录的列)和 WHEN MATCHED 和 WHEN NOT MATCHED 子句(用于指定在匹配或未匹配的情况下需要执行的操作)。
以下是 SQL MERGE 语句的基本语法:
```
MERGE INTO target_table [AS target_alias]
USING source_query [AS source_alias]
ON join_condition
WHEN MATCHED THEN
update_statement
WHEN NOT MATCHED THEN
insert_statement
```
在此语法中,`target_table` 是目标表的名称,`source_query` 是用于选择源表数据的查询条件。`join_condition` 指定用于匹配源和目标表记录的列。`update_statement` 指定在源表和目标表都存在记录的情况下更新目标表的语句,`insert_statement` 指定在源表和目标表都不存在记录的情况下插入新记录的语句。
例如,下面的 SQL MERGE 语句将从 `source_table` 中选择所有年龄大于 30 岁的记录,并将它们插入到 `target_table` 中。如果 `target_table` 中已经存在相同的记录,则更新 `target_table` 中的记录,将其 `salary` 字段值设置为 `source_table` 中对应记录的 `salary` 字段值:
```
MERGE INTO target_table AS t
USING (
SELECT * FROM source_table
WHERE age > 30
) AS s
ON t.id = s.id
WHEN MATCHED THEN
UPDATE SET t.salary = s.salary
WHEN NOT MATCHED THEN
INSERT (id, name, age, salary) VALUES (s.id, s.name, s.age, s.salary);
```
阅读全文