2024年4月28日发(作者:)

sqlserver merge写法

在SQL Server中,`MERGE`语句用于将两个表合并到一起。`MERGE`

语句的基本写法如下:

```sql

MERGE INTO target_table

USING source_table

ON target_ = source_

WHEN MATCHED THEN

UPDATE SET

target_ = source_

WHEN NOT MATCHED THEN

INSERT INTO target_table

(column1, column2, ...)

VALUES

(value1, value2, ...);

```

各部分解释如下:

- `target_table`:目标表,即要将数据合并到的表。

- `source_table`:源表,即提供要合并的数据的表。

- `ON`子句:指定连接条件,target_table的某个列和source_table的

某个列需要匹配。

- `WHEN MATCHED THEN`子句:当源表中的记录与目标表中的记录匹

配时,执行的更新操作。

- `UPDATE SET`子句:指定要更新的目标表列及其新值。

- `WHEN NOT MATCHED THEN`子句:当源表中的记录与目标表中的记

录不匹配时,执行的插入操作。

- `INSERT INTO`子句:指定要插入的列及其值。

这里有一个具体的例子:

假设我们有两个表`employees`和`contractors`,它们都有`first_name`、

`last_name`和`age`列。我们想要将这两个表合并为一个表,保留所有

人的信息。可以使用以下`MERGE`语句:

```sql

MERGE INTO employees

USING contractors

ON _name = _name

AND _name = _name

WHEN MATCHED THEN

UPDATE SET

= ;

WHEN NOT MATCHED THEN

INSERT INTO employees

(first_name, last_name, age)

VALUES

(_name, _name, );

```

这个语句将根据`first_name`和`last_name`列匹配`employees`和

`contractors`表中的记录,并将匹配的记录的`age`列更新为相同值。

对于不匹配的记录,将插入一个新的员工记录。