0

我正在尝试更新可能有重复的表上的值,我想避免这些重复以避免错误:

桌子:

TicketID : UserID
  0      :   1
  0      :   5
  0      :   6
  1      :   4
  1      :   5

我想要做的是将所有票证 ID 更新that = 0,1. 如您所见,已经有一个值1 : 5导致了冲突。我已经尝试过merge, insert intowhere但无法获得忽略更新可能存在的行的查询。

更新后我会手动删除剩余的0 : 5,因为它不会被更新,我认为合并可以为我做到这一点,但我无法让它工作

4

2 回答 2

1

首先检查重复项并删除它们 - 然后执行 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
于 2013-04-12T17:13:27.687 回答
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
于 2013-04-12T17:22:36.327 回答