2013-10-09 5 views
0

두 개의 다른 테이블이 있습니다. 하나는 새 데이터이고 다른 하나는 오래된 테이블입니다. 새 데이터를 이전 테이블로 복사해야합니다. 먼저 모든 테이블을 모두 함께 삽입해야합니다. , 나는 무엇이 업데이트되었는지 확인하고 업데이트해야합니다. 그러면 테이블에없는 것들은 모두 삭제해야합니다. 첫 번째 것은 쉽습니다. 방금 사용했습니다. MERGE INTO x A USING(select z from c) B ON A.z = B.z WHEN NOT MATCHED THEN INSERT....두 테이블을 열에 병합

업데이트를 작성하기 시작하면서 일치하지 않을 때 병합을 작성했지만 일치시킬 기본 키가 필요하므로 업데이트 할 항목이 무엇인지, 어떻게해야합니까?

마지막으로 삭제가 잘되어야, 난 그냥 더 이상 새로운 일에없는 모든 키와 테이블을 만든 다음 그들에게

문제는 업데이트 함께 삭제됩니다. 어떤 아이디어?

답변

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

가 실제로 다시 http://msdn.microsoft.com/en-us/library/bb510625.aspx를 읽은 후 그것을 파악했다이 당신에게 몇 가지 아이디어를 줄 것이다 희망 – FabianCook

+0

문제가없는 친구 :) –

관련 문제