【问题标题】:update using increments in mysql return duplicate key error在mysql中使用增量更新返回重复键错误
【发布时间】:2012-04-07 11:49:01
【问题描述】:

所以我跑

UPDATE x
SET y = y + 1;

其中 y 是表的主键...但是假设表中有两个条目 y = 1,2,3...查询将抱怨键 'PRIMARY' 的重复条目,因为它尝试将 y = 1 更新为 y = 2,它会与另一个已经存在的 y = 2 条目冲突......有没有办法让 mysql 忽略这一点,并且无论如何都要更新所有内容,而无需手动删除密钥....我知道我可以暂时删除密钥,然后执行此操作,然后重新添加密钥,但我想知道是否有可能不这样做...

【问题讨论】:

  • 嗯,你为什么要这么做? :)
  • 如何搜索有问题的键,然后只修复它们?你真的要求将所有键调整为 key+1 吗?
  • @Randy 是的.......
  • 请记住,如果这是从主表到明细表,那么每个实体都会中断。

标签: mysql sql mysql5


【解决方案1】:

你可以试试这个

UPDATE x SET y = y + 1 order by y DESC

【讨论】:

  • 或者可能是 2 遍更新 - 您在每个键中添加一些大于现有最大键的数字。然后在第 2 遍中,您减去比该值多 1 的数字。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-17
  • 1970-01-01
  • 2013-05-21
  • 2018-07-04
  • 2014-10-07
相关资源
最近更新 更多