mysql - SQL UPDATE 或 DELETE 如果重复

标签 mysql

我正在尝试在我的数据库中运行 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 中,我有两列 abonnerubriq。 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/

相关文章:

mysql - 从包含类别和子类别的表中进行选择的 SQL 查询

时间戳日期的 mySql 索引

mysql - mysql中有获取Geometry的MBR(Minimal Bounding Rectangles)的函数吗?

php - 如果 varchar 字段的值大于 9999,Mysql 'between' 条件不起作用

mysql - 如何在 36 秒内查找并分组时间链?

mysql - 为什么这个存储不返回结果

mysql - 这可以用mysql吗?

javascript - 我正在尝试创建几个按钮,每个按钮在 MySQL 中显示不同的数据库,但数据库名称显示为未定义

php - MYSQL/Ajax/PHP 生成的下拉列表不通过 'GET' 传递值

c# - 无效的转换异常未处理 MySQL