Sql 合并列上的两个表

Sql 合并列上的两个表,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有两个不同的表,一个是新表,一个是旧表,我需要将新表中的数据复制到旧表中,首先我需要将所有新表一起插入,然后我需要查找哪些表已更新并更新,然后我需要删除表中不存在的所有表,第一个很简单,我刚刚使用了MERGE INTO x A,在A.z=B.z上使用c B中的选择z,当不匹配时,使用INSERT 但是当我开始写更新的时候,我在不匹配的时候写了合并,但是我需要匹配主键,所以我知道那是要更新的,我该怎么做 最后一次删除应该可以,我将创建一个表,其中包含新表中不再包含的所有键,然后删除它们 问题在于

我有两个不同的表,一个是新表,一个是旧表,我需要将新表中的数据复制到旧表中,首先我需要将所有新表一起插入,然后我需要查找哪些表已更新并更新,然后我需要删除表中不存在的所有表,第一个很简单,我刚刚使用了MERGE INTO x A,在A.z=B.z上使用c B中的选择z,当不匹配时,使用INSERT

但是当我开始写更新的时候,我在不匹配的时候写了合并,但是我需要匹配主键,所以我知道那是要更新的,我该怎么做

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


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

我希望这会给你一些想法

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

其实我在再读一遍之后就明白了,谢谢: