SQL Server Merge matched 再加其他条件的示例

这里介绍使用临时表的方式进行Merge,额外的条件语句用红色标出:

假设有一个字典表 dic_dict {code,name,update_date}
第一步 先创建临时表
create table #temp_source( [code] [varchar](20) COLLATE CHINESE_PRC_CI_AS not null, [name] [varchar](1000) COLLATE CHINESE_PRC_CI_AS not null )
第二步 临时表中插入要merge的数据(可以用批量插入)
insert into #temp_source (code,name)values(@code,@name)

第三步 使用merge加其他条件 翻译就是:根据code是否存在进行对比更新。如果存在 同时name不相同的时候 对name进行更新。 如果code不存在 则 执行插入。
merge into dic_dict 
target using #temp_source source
on (target.code = source.code )
when matched
and (target.name != source.name)
then update set target.name = source.name,update_date= GETDATE()
when not matched
then insert (code,name,update_date)
values (source.code,source.name,GETDATE());

第四步 删除临时表
drop table #temp_source

 


  

posted @ 2022-12-06 13:59  歌·颂  阅读(389)  评论(0编辑  收藏  举报