2013-10-09 4 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

Без проблем :) –

Смежные вопросы