0
我有一個表有兩個列Hotel_Guest_ID和Guest_ID,將客人記錄鏈接到該客人的酒店詳細信息。該表具有每個對都必須是唯一的約束。SQL更新語句,刪除行,如果鍵衝突
我現在有第二個Prime_ID和Duplicate_ID表,它是在清理重複客戶表後生成的。我想查看Booking表,如果找到Hotel.Guest_ID爲Duplicate_ID,然後用Prime_ID替換它。
update b
set h.Guest_ID = gd.Prime_ID
from Hotel as h
join Guest_Duplicates as gd
on h.Guest_ID = gd.Duplicate_ID
但是這個失敗經常一個Prime_ID已經與特定的客戶記錄,在這一點上,我想只刪除此行,而不是更新它。
有沒有一種很好的方法來做到這一點,或者我必須先刪除潛在的衝突行,然後在第二個查詢中更新?
雖然你需要設置只有在更新衝突時纔會刪除的條件? – skeletalmonkey
使用'當匹配和存在(檢查衝突)'。 – freakyhat
所以實際上這是行不通的。問題是merge語句可能更新一個值,然後與另一行的更新衝突。雖然合併似乎先排列變化然後再應用它們,但我不知道要使用什麼條件來檢查早期合併步驟中可能發生的衝突 – skeletalmonkey