今天学到了sqlserver中的merge into,在这里记录一下自己的学习过程。
首先我们要准备两个表。
随后贴出来的merge into代码,它会在插入时做检测,若表中已存在数据,会用新数据做更新,若表中不存在数据,会把新数据插入表中。
merge into [Test].[dbo].[merge_target] as t #merge into后的表被当做目标表
using [Test].[dbo].[merge_source] as s #using后的表被当做源表
on t.name=s.name #on后写的是两张表的链接条件
when matched #如果数据匹配上
then update set t.id=s.id #用source表的id去更新target表的id
when not matched by target #如果没有匹配上,也就是target表里没有source表的数据
then insert (name,age,id) values (s.name,s.age,s.id) #把数据插入到target表
when not matched by source #如果target表中存在source表没有的数据
then delete #则删除target表的数据
; #一定要带上这个分号,不然会报错
下面这是运行结果