尝试递增日期字段时,MySQL 出现重复输入错误?

标签 mysql duplicates increment

我正在从 XML 文件中读取数据。由于源代码错误,日期已经过了一天,所以在加载到数据库后,我使用此 SQL 语句来增加日期。

UPDATE 2011_electricity SET DATE = DATE_ADD( DATE, INTERVAL 1 DAY )

上周它运行良好,但现在我收到一个错误:

MySQL said: 

#1062 - Duplicate entry '2011-07-20' for key 1 

我在数据字段上有一个主键。这是数据库的样子:

                date        energy  daynum
        2011-06-29  0.05    4197
        2011-07-19  0.20    4219
        2011-07-20  17.07   4220
        2011-07-21  11.56   4221
        2011-07-22  18.18   4222
        2011-07-23  24.92   4223
        2011-07-24  10.56   4224
        2011-07-25  12.68   4225
        2011-07-26  10.06   4226
        2011-07-27  19.72   4227
        2011-07-28  19.02   4228
        2011-07-29  17.92   4229
        2011-07-30  14.49   4230
        2011-07-31  10.84   4231
        2011-08-01  13.38   4232
        2011-08-02  14.86   4233

我在那里看不到任何重复项,所以不明白错误,是否有更好的方法来执行 mysql 代码以将日期递增 1?

最佳答案

这是一个关于 MySQL 的 UPDATE 如何工作的问题,如 p.cambell 解释的那样逐行。绕过这个问题的另一种方法是明确告诉引擎如何排序更新(另一个 MySQL 怪癖):

UPDATE 2011_electricity 
SET DATE = DATE_ADD( DATE, INTERVAL 1 DAY )
ORDER BY DATE DESC 

经验法则:如果您想增加 PK(或其他唯一键),请按降序排列。如果要减少 PK,请按升序排序。

关于尝试递增日期字段时,MySQL 出现重复输入错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6968247/

相关文章:

php - 为什么我应该使用 bindValue/Param 而不是普通变量?

python - 如何检查平面列表中是否有重复项?

templates - xslt 条件增量

不重复的java随机值

python - 如何显示列表中字符串的重复项

mysql - SQL:每行的用户变量增量

ruby - 续集 gem 增量

mysql - 查询返回两个表的并集

mysql - Rails 订单产品价格按最小值递增和递减 has_many 关系

数据库;一列中的不同 ID?