SQL中MERGE的用法

简介

    Merge关键字是一个神奇的DML关键字。它在SQL Server 2008被引入,它能将Insert,Update,Delete简单的并为一句。MSDN对于Merge的解释非常的短小精悍:”根据与源表联接的结果,对目标表执行插入、更新或删除操作。例如,根据在另一个表中找到的差异在一个表中插入、更新或删除行,可以对两个表进行同步。”,通过这个描述,我们可以看出Merge是关于对于两个表之间的数据进行操作的。

    可以想象出,需要使用Merge的场景比如:

  •     数据同步
  •     数据转换
  •     基于源表对目标表做Insert,Update,Delete操作

MERGE INTO语法如下:

MERGE INTO table_name alias1
USING (table|view|sub_query) alias2
ON (join condition)
WHEN MATCHED THEN
UPDATE
SET col1 = col1_val1,
col2 = col2_val2
WHEN NOT MATCHED THEN
INSERT (column_list) VALUES (column_values);

其中,table_name 指的是更新的表,using()里边的指的是数据来源表/视图/子查询结果集,condition指的是连接条件,如果满足连接条件,set 字段1=值1,字段2=值2..

实例如下:

MERGE INTO gdps_memberbank c
USING dual
ON (c.cltno= #cltno#)
WHEN MATCHED THEN
UPDATE
SET c.mb_flag=mb_flag
WHERE c.cltno=#cltno#
WHEN NOT MATCHED THEN
INSERT(CLTNO,MB_FLAG)
VALUES (#cltno#,#mb_flag#)

       在gdp_memberbank目标表和dual源表中查询cltNo是否用相同字段的信息,有的话执行update,没有的话执行insert;

 

posted @ 2019-11-18 18:28  蔚然长空  阅读(1353)  评论(0编辑  收藏  举报