比较和更新两个SQL表的最佳方法

时间:2015-10-07 17:52:48

标签: sql sql-server database tsql

比较两个表的最佳方法是什么,比如说SourceTableA和DestinationTableB?

  • 如果在DestinationTableB中找到但在SourceTableA中不存在的数据, 将它们插入SourceTableA
  • 如果在SourceTableA中找到数据但不是DestinationTableB,则删除 他们来自SourceTableA

3 个答案:

答案 0 :(得分:2)

您应该使用MERGE语句来执行此操作。

MDSN - SQL Merge

答案 1 :(得分:0)

Relevant

非常含糊不清,但是最好的选择可能是运行2个查询,一个从A中删除它不存在于B中,然后将其插入A中它并不存在于A。

答案 2 :(得分:0)

这两个条件是互斥的,因此您不需要其他

delete SourceTableA 
where not exist (select 1 from DestinationTableB 
                 where DestinationTableB.key = SourceTableA.key)

insert into SourceTableA  
select * 
from DestinationTableB 
where not exist (select 1 from SourceTableA 
                 where DestinationTableB.key = SourceTableA.key)