Merge Into '目标表Target'using'语句或源表Source' ON 目标表与源表关联条件 When Matched and 条件 Then 更新语句 When Not Matched By Target 如果‘目标表’不存在行 Then 插入语句
if exists(select top 1 * from KeDaoTest.dbo.salary)
begin
--选择'目标表T'
Merge Into KeDaoTest.dbo.salary as T
--从'源表S'查找编码相同的列,并进行关联
using (select autono,no2,name,Sdatetime from mpsalary.dbo.salary as ss where ss.Sdatetime > DateAdd(Month,-2,getdate())) as S on T.autono=S.autono
--检查是否有改动过的列
When Matched and T.autono <> S.autono or T.no2 <> S.no2 or T.name <> S.name or T.SDatetime<>S.SDatetime
--有改动过则update'目标表'的列
Then Update set T.autono=S.autono,T.no2=S.no2,T.name=S.name,T.SDatetime=S.SDatetime
--如果‘目标表’不存在行
When Not Matched By Target
--则从'源表'insert行到'目标表'
Then Insert (autono,no2,name,SDatetime) values (S.autono,S.no2,S.name,S.SDatetime)
When Not Matched By Source and T.Sdatetime > DateAdd(Month,-2,getdate())
Then Delete;
end ---merge的end关键字
本文介绍了一种使用SQL Merge语句来同步两个表数据的方法。该过程包括:当目标表中的记录与源表匹配时进行更新;当目标表中不存在源表记录时进行插入;当源表中记录在目标表中不再存在时进行删除。通过这种方式,可以有效地保持数据的一致性和最新状态。

被折叠的 条评论
为什么被折叠?



