下面的問題讓我佔用。關於查找和衝壓三角洲。SQL Server:比較2個數據加載,然後使用增量加戳
我在dbo.persoon
表中有兩個數據加載完全相同的100行,分別用load1和load2標記。我在這200條記錄中做了3列更改,以確保有delta。如果我運行select...except...select
部分,那麼這些三角洲會顯示出來。
接下來我想通過使用update語句來標記這些delta的行。但是,當我運行更新代碼時,會出現一個消息,顯示200行。有誰知道如何解決這個問題,只更新三角洲的行?
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')
聽起來像是不錯的情況下使用MERGE – UnhandledExcepSean
@Ghost合併是一個upserts,在這種情況下,OP只想更新正確的行。正確的JOIN將完成這項工作。 –
@mgo如果子查詢包含任何行,您的查詢將更新'person'中的每一行。由於UPDATE的'person'和子查詢之間存在連接,這意味着所有行都將被更新。 –