我正在尝试更新可能有重复项的表上的值,我想避免这些重复项以避免错误:
表格
TicketID : UserID
0 : 1
0 : 5
0 : 6
1 : 4
1 : 5
我要做的是将所有Ticket Id的that = 0,
更新为1
的值。正如您所看到的,1 : 5
的值已经导致冲突。我已经使用merge, insert into
尝试where
,但我无法获得忽略可能存在的更新行的查询。
更新后,我会手动删除剩余的0 : 5
,因为那不会更新,我认为合并可以为我做,但我无法让它工作
答案 0 :(得分:0)
首先检查重复项并删除它们 - 然后执行ubdate。
BEGIN TRAN
DELETE FROM Table
WHERE TicketID = 0 AND UserID IN(SELECT UserID FROM TABLE WHERE TicketID=1);
UPDATE TABLE
SET TicketID = 1
WHERE TicketID = 0;
/*If no error run*/
COMMIT TRAN
/*If error run*/
ROLLBACK TRAN
答案 1 :(得分:0)
尝试如下。它会帮助你..
UPDATE TABLENAME
SET TicketID = 1
WHERE TicketID = 0 AND UserID Not IN(SELECT distinct UserID FROM TABLENAME
WHERE TicketID=1)
DELETE FROM TABLENAME WHERE TicketID = 0