0

我有两个不同的表,一个有新数据,一个有旧数据,我需要将新数据中的数据复制到旧数据中,首先我需要将所有新的数据全部插入,然后我需要找到哪些数据已经更新更新了,那我需要把表里没有的都删掉,第一个很简单,我刚用过MERGE INTO x A USING(select z from c) B ON A.z = B.z WHEN NOT MATCHED THEN INSERT....

但是当谈到更新时,我开始写它,当它不匹配时我写了合并,但是我需要主键来匹配所以我知道那是要更新的那个,我打算怎么做?

最后一次删除应该没问题,我将创建一个表,其中包含不再在新表中的所有键,然后删除它们

问题在于更新。有任何想法吗?

4

1 回答 1

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
于 2013-10-09T20:50:02.707 回答