使用except语句更新

时间:2012-09-17 15:33:32

标签: 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)

来自两台服务器的这两个表。我需要更新来自targetsite_id的{​​{1}}条记录中的[A].Datawarehouse.mi.ctb_PageEvent 仅与上述查询结果匹配。

1 个答案:

答案 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%起作用。只要你理解逻辑

就调整它