SQL Server 中单行 MERGEupsert 的语法

sqlserver

1个回答

写回答

17815584705

2025-07-06 19:40

+ 关注

SQL Server 中单行 MERGE/upsert 的语法

在 SQL Server 数据库中,MERGE 操作是一种强大的功能,它可以同时执行插入、更新和删除操作,以实现数据的合并或更新。MERGE 操作也被称为 upsert,即当目标表中已存在相同的记录时,执行更新操作,否则执行插入操作。

MERGE 语法

MERGE 语句的基本语法如下:

sql

MERGE target_table AS target

USING source_table AS source

ON target.column = source.column

WHEN MATCHED THEN

UPDATE SET target.column1 = source.column1, target.column2 = source.column2

WHEN NOT MATCHED THEN

INSERT (column1, column2)

VALUES (source.column1, source.column2);

案例代码

假设我们有两个表,一个是目标表(target_table),另一个是源表(source_table)。目标表中有一列(column)用于匹配源表的列(column)。我们希望根据源表的数据来更新或插入目标表中的记录。

目标表的结构如下:

sql

CREATE TABLE target_table (

column INT PRIMARY KEY,

column1 VARCHAR(50),

column2 VARCHAR(50)

);

源表的结构如下:

sql

CREATE TABLE source_table (

column INT PRIMARY KEY,

column1 VARCHAR(50),

column2 VARCHAR(50)

);

假设目标表中已经存在一条记录,我们可以使用 MERGE 语句来更新该记录,如果目标表中不存在与源表匹配的记录,则可以插入一条新记录。下面是案例代码:

sql

MERGE target_table AS target

USING source_table AS source

ON target.column = source.column

WHEN MATCHED THEN

UPDATE SET target.column1 = source.column1, target.column2 = source.column2

WHEN NOT MATCHED THEN

INSERT (column, column1, column2)

VALUES (source.column, source.column1, source.column2);

通过执行上述 MERGE 语句,可以实现目标表和源表的数据合并或更新。如果目标表中已存在与源表匹配的记录,则会执行更新操作;如果不存在匹配的记录,则会执行插入操作。

在 SQL Server 中,MERGE 操作提供了一种便捷的方式来实现数据合并或更新。通过合理使用 MERGE 语句,我们可以避免手动编写复杂的逻辑来处理数据的插入和更新操作。这种单行 MERGE/upsert 的语法在处理大量数据时非常高效,并且可以简化代码的编写和维护工作。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号