在 SQL Server 2008 中,通过使用 MERGE 语句,可以在单个语句中执行多个数据操作语言 (DML) 操作。例如,您可能需要根据在另一个表中找到的差异在一个表中插入、更新或删除行,从而对两个表进行同步。通常,可以通过执行包含各个 INSERT、UPDATE 和 DELETE 语句的存储过程或批处理来实现这一目的。然而,这意味着需要多次计算和处理源表和目标表中的数据;至少对每个语句计算和处理一次。因为MERGE性能上比单个的INSERT,UPDATE,DELETE要快。

示例:

图。。。

注意:如果target表和source表连接结果有重复记录,那么在执行MERGE时会报异常,也就是说MERGE不能处理重复记录

MSDN:

            MERGE (Transact-SQL)

            http://msdn.microsoft.com/zh-cn/library/bb510625.aspx

            优化 MERGE 语句性能

http://msdn.microsoft.com/zh-cn/library/cc879317.aspx