SQL Server 中单行 MERGE/upsert 的语法
在 SQL Server 数据库中,MERGE 操作是一种强大的功能,它可以同时执行插入、更新和删除操作,以实现数据的合并或更新。MERGE 操作也被称为 upsert,即当目标表中已存在相同的记录时,执行更新操作,否则执行插入操作。MERGE 语法MERGE 语句的基本语法如下:sqlMERGE target_table AS targetUSING source_table AS sourceON target.column = source.columnWHEN MATCHED THEN UPDATE SET target.column1 = source.column1, target.column2 = source.column2WHEN NOT MATCHED THEN INSERT (column1, column2) VALUES (source.column1, source.column2);案例代码假设我们有两个表,一个是目标表(target_table),另一个是源表(source_table)。目标表中有一列(column)用于匹配源表的列(column)。我们希望根据源表的数据来更新或插入目标表中的记录。目标表的结构如下:
sqlCREATE TABLE target_table ( column INT PRIMARY KEY, column1 VARCHAR(50), column2 VARCHAR(50));源表的结构如下:
sqlCREATE TABLE source_table ( column INT PRIMARY KEY, column1 VARCHAR(50), column2 VARCHAR(50));假设目标表中已经存在一条记录,我们可以使用 MERGE 语句来更新该记录,如果目标表中不存在与源表匹配的记录,则可以插入一条新记录。下面是案例代码:
sqlMERGE target_table AS targetUSING source_table AS sourceON target.column = source.columnWHEN MATCHED THEN UPDATE SET target.column1 = source.column1, target.column2 = source.column2WHEN NOT MATCHED THEN INSERT (column, column1, column2) VALUES (source.column, source.column1, source.column2);通过执行上述 MERGE 语句,可以实现目标表和源表的数据合并或更新。如果目标表中已存在与源表匹配的记录,则会执行更新操作;如果不存在匹配的记录,则会执行插入操作。在 SQL Server 中,MERGE 操作提供了一种便捷的方式来实现数据合并或更新。通过合理使用 MERGE 语句,我们可以避免手动编写复杂的逻辑来处理数据的插入和更新操作。这种单行 MERGE/upsert 的语法在处理大量数据时非常高效,并且可以简化代码的编写和维护工作。
Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号