Sql 用except语句更新

Sql 用except语句更新,sql,tsql,select,except,Sql,Tsql,Select,Except,这是我的问题 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) 这两个表来自两台服务器。我需要更新[A].Datawarehouse.mi.ctb_PageEvent中的ta

这是我的问题

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)
这两个表来自两台服务器。我需要更新
[A].Datawarehouse.mi.ctb_PageEvent
中的
targetsite_id
,这些记录来自
[B].Datawarehouse.mi.ctb_PageEvent
仅与以上查询结果匹配

试试这个

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;

请参阅。我的解决方案只是给出了一个如何实现这一点的基本思路。最初它可能无法100%工作。一旦您理解了逻辑,只需对其进行调整

,但我只需要更新此查询结果集中的记录(从[A].Datawarehouse.mi.ctb_PageEvent中选择PageVisite_ID,TargetSite_ID,从[B].Datawarehouse.mi.ctb_PageEvent中选择(NOLOCK))即可