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

sqlserver的merge into语法

SQL Server的MERGE语句是一种将INSERT、UPDATE

和DELETE操作组合到单个语句中的语法结构。它允许根据

源数据和目标数据的匹配条件,执行相应的操作。

下面是MERGE语句的基本语法:

sql复制代码:

MERGE INTO target_table USING source_table

ON (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 (condition):指定源表和目标表之间的匹配条件。

如果满足该条件,则执行相应的更新或插入操作。

• WHEN MATCHED THEN:当满足匹配条件时执行的语

句块。

• UPDATE SET column1 = value1, column2 = value2, ...:

用于更新目标表的列的值。

• WHEN NOT MATCHED THEN:当不满足匹配条件时执

行的语句块。

• INSERT (column1, column2, ...) VALUES (value1,

value2, ...):用于插入新行到目标表中。

下面是一个示例,演示了如何使用MERGE语句:

sql复制代码:

MERGE INTO employees AS target

USING (SELECT employee_id, first_name, last_name

FROM employees WHERE department = 'Sales') AS source

ON (ee_id = ee_id)

WHEN MATCHED THEN

UPDATE SET = + 1000,

_name = 'Smith'

WHEN NOT MATCHED THEN

INSERT (employee_id, first_name, last_name) VALUES

(ee_id, _name, 'Smith');

上述示例中,我们首先指定了目标表为employees,源

表为包含部门为"Sales"的员工的子查询。然后,我们指定了

匹配条件为ee_id = ee_id。当满

足匹配条件时,我们执行更新操作,将目标表的工资增加

1000,并将姓氏更新为"Smith"。当不满足匹配条件时,我们

执行插入操作,将源表的员工ID、名字和姓氏插入到目标表

中。