"SQL MERGE 语句提供了一种强大的方式,可以根据源表的结果对目标表执行插入、更新或删除操作。这个单一语句通过有效地合并数据来同步这两个表。例如,您可能有一个包含客户信息的目标表和一个包含更新详情的源表。MERGE 语句可以用于更新匹配的现有记录,若在目标表中未找到匹配则插入新记录,或者根据特定条件删除记录。
MERGE 语句的语法通常以 MERGE INTO
关键字开头,后面跟随目标表。然后,您指定 USING
子句以定义源表。使用 ON
子句建立匹配条件。在语句中,您概述在匹配时应采取的行动,通常使用 WHEN MATCHED
子句,其中通常包含 UPDATE
命令。相反,您可以使用 WHEN NOT MATCHED
子句处理未找到匹配的情况,通常会导致执行 INSERT
操作。
这里有一个基本示例来说明。假设您有一个名为 Products
的目标表和一个名为 NewProducts
的源表。您想要更新在两个表中都存在的产品的价格,并插入 NewProducts
中任何尚不存在于 Products
中的新产品。MERGE 语句可以如下所示:
MERGE INTO Products AS target
USING NewProducts AS source
ON target.ProductID = source.ProductID
WHEN MATCHED THEN
UPDATE SET target.Price = source.Price
WHEN NOT MATCHED THEN
INSERT (ProductID, ProductName, Price)
VALUES (source.ProductID, source.ProductName, source.Price);
在这个例子中,如果 NewProducts
中的 ProductID
存在于 Products
中,价格将被更新;如果不存在,将插入一个包含提供的详细信息的新产品。这使得 MERGE 语句不仅灵活,而且是处理复杂数据更新的更简洁的方法,确保您的数据库保持一致和最新,且代码量最小。"