这是我的问题
SELECT PageVisit_ID,TargetSite_ID FROM [A].Datawarehouse.mi.ctb_PageEvent WITH (NOLOCK)
EXCEPT
SELECT PageVisit_ID ,TargetSite_ID FROM [B].Datawarehouse.mi.ctb_PageEvent WITH (NOLOCK)这两个表来自两个服务器。我只需要在与上述查询结果匹配的[B].Datawarehouse.mi.ctb_PageEvent中更新[A].Datawarehouse.mi.ctb_PageEvent记录中的targetsite_id。
发布于 2012-09-17 23:46:06
尝尝这个
DECLARE @SummaryOfChanges TABLE(Change VARCHAR(20));
MERGE INTO [A].Datawarehouse.mi.ctb_PageEvent AS Target
USING ( SELECT PageVisit_ID ,TargetSite_ID FROM [B].Datawarehouse.mi.ctb_PageEvent WITH (NOLOCK)) AS SOURCE
ON Target.TargetSite_ID = Source.TargetSite_ID
WHEN MATCHED THEN
//UPDATE OR do nothing
WHEN NOT MATCHED BY TARGET THEN
//INSERT
OUTPUT $action INTO @SummaryOfChanges;请参考SQL SERVER – Merge Operations – Insert, Update, Delete in Single Execution。我的解决方案只是给出了一个如何做到这一点的基本想法。它最初可能不会100%工作。一旦你理解了其中的逻辑,就可以调整它
https://stackoverflow.com/questions/12462560
复制相似问题