这是我的查询
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)
来自两台服务器的这两个表。我需要更新来自targetsite_id
的{{1}}条记录中的[A].Datawarehouse.mi.ctb_PageEvent
仅与上述查询结果匹配。
答案 0 :(得分:1)
试试这个
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%起作用。只要你理解逻辑
就调整它