我有两个不同的表,一个是新数据,一个是旧数据,我需要将数据从新数据复制到旧数据库中,首先我需要将所有新数据一起插入,然后我需要找到已更新的内容并更新它们,然后我需要删除表格中没有的所有内容,第一个很简单,我只是使用MERGE INTO x A USING(select z from c) B ON A.z = B.z WHEN NOT MATCHED THEN INSERT....
但是当谈到更新我开始写它时,我写了合并它没有匹配,但我需要主键匹配所以我知道那个要更新,我是怎么意思这样做?
最后一次删除应该没问题,我将只创建一个包含所有新单词的表格,然后删除它们
问题在于更新。有什么想法吗?
答案 0 :(得分:2)
我希望这会给你一些想法
--Synchronize source data with target
MERGE INTO dbo.tbl_Target AS t
USING dbo.tbl_Source AS s
ON t.id = s.id
WHEN MATCHED AND (t.name != s.name OR t.qty!= s.qty) THEN
--Row exists and data is different
UPDATE SET t.name = s.name, t.qty = s.qty
WHEN NOT MATCHED BY TARGET THEN
--Row exists in source but not in target
INSERT VALUES (s.id, s.name, s.qty)
WHEN NOT MATCHED BY SOURCE THEN
--Row exists in target but not in source
DELETE OUTPUT$action, inserted.id, deleted.id