oracle merge用法
时间: 2023-07-12 20:04:26 浏览: 72
Oracle MERGE语句是将数据从一个表合并到另一个表中的一种方法,它可以完成以下操作:
1. 如果目标表中不存在该行,则插入一行。
2. 如果目标表中存在该行,则更新该行。
MERGE语句的基本语法如下:
```
MERGE INTO target_table USING source_table
ON (join_condition)
WHEN MATCHED THEN
UPDATE SET column1 = value1, column2 = value2,...
WHEN NOT MATCHED THEN
INSERT (column1, column2,...) VALUES (value1, value2,...);
```
其中:
- `target_table`:目标表,即要将数据合并到其中的表。
- `source_table`:源表,即要从中合并数据的表。
- `ON`:合并条件,即用于连接目标表和源表的条件。
- `WHEN MATCHED THEN`:如果目标表中存在与源表匹配的行,则执行更新操作。
- `UPDATE SET`:指定要更新的列及其新值。
- `WHEN NOT MATCHED THEN`:如果目标表中不存在与源表匹配的行,则执行插入操作。
- `INSERT`:指定要插入的列及其值。
下面是一个示例:
```
MERGE INTO employees_target tgt
USING employees_source src
ON (tgt.employee_id = src.employee_id)
WHEN MATCHED THEN
UPDATE SET tgt.salary = src.salary, tgt.department = src.department
WHEN NOT MATCHED THEN
INSERT (tgt.employee_id, tgt.salary, tgt.department)
VALUES (src.employee_id, src.salary, src.department);
```
以上示例将数据从`employees_source`表合并到`employees_target`表中,如果`employees_target`表中存在与`employees_source`表匹配的行,则更新`salary`和`department`列的值,否则插入一行包含`employee_id`、`salary`和`department`列的记录。
阅读全文