在列上合并两个表

时间:2013-10-09 20:42:31

标签: sql sql-server sql-server-2008

我有两个不同的表,一个是新数据,一个是旧数据,我需要将数据从新数据复制到旧数据库中,首先我需要将所有新数据一起插入,然后我需要找到已更新的内容并更新它们,然后我需要删除表格中没有的所有内容,第一个很简单,我只是使用MERGE INTO x A USING(select z from c) B ON A.z = B.z WHEN NOT MATCHED THEN INSERT....

但是当谈到更新我开始写它时,我写了合并它没有匹配,但我需要主键匹配所以我知道那个要更新,我是怎么意思这样做?

最后一次删除应该没问题,我将只创建一个包含所有新单词的表格,然后删除它们

问题在于更新。有什么想法吗?

1 个答案:

答案 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