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))即可