Sql 合并列上的两个表
我有两个不同的表,一个是新表,一个是旧表,我需要将新表中的数据复制到旧表中,首先我需要将所有新表一起插入,然后我需要查找哪些表已更新并更新,然后我需要删除表中不存在的所有表,第一个很简单,我刚刚使用了MERGE INTO x A,在A.z=B.z上使用c B中的选择z,当不匹配时,使用INSERT 但是当我开始写更新的时候,我在不匹配的时候写了合并,但是我需要匹配主键,所以我知道那是要更新的,我该怎么做 最后一次删除应该可以,我将创建一个表,其中包含新表中不再包含的所有键,然后删除它们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 但是当我开始写更新的时候,我在不匹配的时候写了合并,但是我需要匹配主键,所以我知道那是要更新的,我该怎么做 最后一次删除应该可以,我将创建一个表,其中包含新表中不再包含的所有键,然后删除它们 问题在于
问题在于更新。有什么想法吗?我希望这会给你一些想法
--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
其实我在再读一遍之后就明白了,谢谢: