SQL Server:比较2个数据加载,然后用delta标记

时间:2016-03-21 16:44:01

标签: sql-server exists

以下问题让我感到困惑。关于发现和盖章三角洲。

我在dbo.persoon表中有两个完全相同的100行数据加载,分别用load1和load2标记。我在这200条记录中进行了3次列更改,以确保存在delta。如果我运行select...except...select部分,则会显示这些delta。

接下来,我想使用update语句标记这些delta的行。但是,当我运行更新代码时,会有一条消息表明有200行受影响。有谁知道如何解决这个问题,只更新delta的行?

update dbo.persoon
set Marking_Field='10'
where exists 
    (select [ID_person],[NM_firstname] from dbo.persoon where load_date='load1'
     except
     select [ID_person],[NM_firstname] from dbo.persoon where load_date='load2') 

1 个答案:

答案 0 :(得分:0)

为什么不这样做......

with cte
as
(
select [ID_person],[NM_firstname] from dbo.persoon where load_date='load1'
     except
     select [ID_person],[NM_firstname] from dbo.persoon where load_date='load2'
)
update cte
set Marking_Field='10'