更新表的 MERGE 语句

MERGE 语句允许您对源表与目标表的一个外部连接的结果应用布尔条件。如果 MERGE 语句包括 Update 子句,则对目标在 UPDATE 操作中使用那些满足您在 ON 关键字之后指定的连接条件的行。MERGE 语句的 SET 子句支持与 UPDATE 语句的 SET 子句相同的语法,并指定要更新的目标表的哪些列。

下例示例展示您可如何使用 MERGE 语句的 Update 子句来更新目标表:
MERGE INTO t_target AS t USING t_source AS s ON t.col_a = s.col_a
          WHEN MATCHED THEN UPDATE 
          SET t.col_b = t.col_b + s.col_b ;

在前一示例中,目标表的名称为 t_target,源表的名称为 t_source。对于在源表与目标表中其 col_a 都有相同的值的连接结果的行,MERGE 语句通过将源表中 col_b 列的值添加到 t_target 表中 col_b 列的当前值来更新 t_target 表。

MERGE 语句的 UPDATE 操作不修改源表,且不可更新目标表中的任何行超过一次。

单个 MERGE 语句可同时组合 UPDATE 与 INSERT 操作,或可同时组合 DELETE 与 INSERT 操作而不需要删除子句。要了解不包括 Update 子句的 MERGE 的不同的示例,请参阅主题 MERGE 的 Delete 子句