我正在尝试在我的数据库中运行 3 个查询:
UPDATE `table` SET `rubriq` = '77' WHERE `rubriq` = '61';
UPDATE `table` SET `rubriq` = '77' WHERE `rubriq` = '62';
UPDATE `table` SET `rubriq` = '77' WHERE `rubriq` = '63';
在 table
中,我有两列 abonne
和 rubriq
。 Abonne 是主键,两个是索引。
如果在我的数据库中有例如:
abonne | rubriq
84 | 61
84 | 62
84 | 63
当我运行 3 个查询时,第一个没有问题,但第二个出现错误:#1062 - Duplicate entry '84-77' for key 1
我该怎么做才能运行这 3 个查询,但是,当出现这样的错误时,只需删除该行?
谢谢!
最佳答案
您必须手动删除会导致冲突的记录:
UPDATE `table` SET rubriq = 77 WHERE rubriq = 61;
DELETE t62
FROM `table` t77
JOIN `table` t62 USING (abonne)
WHERE t77.rubriq = 77
AND t62.rubriq = 62;
UPDATE `table` SET rubriq = 77 WHERE rubriq = 62;
DELETE t63
FROM `table` t77
JOIN `table` t63 USING (abonne)
WHERE t77.rubriq = 77
AND t63.rubriq = 63;
UPDATE `table` SET rubriq = 77 WHERE rubriq = 63;
关于mysql - SQL UPDATE 或 DELETE 如果重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32452784/