比较2表如果匹配更新,如果不匹配插入

时间:2013-08-15 22:39:13

标签: sql-server sql-server-2008

我有2个表具有相同的表结构。表A包含每个记录中具有3个唯一键的所有事务。表B仅包含条件基础记录。

我希望比较两个表,如果表B的匹配记录比我想要更新的那样,并且表B没有匹配记录而不是表B中的插入。

请你建议最好的办法,如ssis或其他任何东西

1 个答案:

答案 0 :(得分:1)

最简单的方法是MERGE声明:

MERGE INTO Table_B  
USING Table_A 
ON TableA.ID1 = Table_B.ID1 AND TableA.ID2 = Table_B.ID2 AND TableA.ID3 = Table_B.ID3
WHEN MATCHED THEN UPDATE SET A = Table_A.A, B = Table_A.B         -- Etcetera...
WHEN NOT MATCHED THEN INSERT (A, B) VALUES (Table_A.a, Table_A.B) -- Etcetera...
WHEN NOT MATCHED BY SOURCE THEN DELETE                            -- If Necessary...
;

顺便说一下,别忘了“;”在末尾。 SQL Server通常不需要它们,但MERGE会这样做。