【问题标题】:MySQL Query needed to update existing date by 8MySQL Query 需要将现有日期更新 8
【发布时间】:2016-09-08 01:30:54
【问题描述】:

我有一个 mysql 数据库,只有 4 条记录(10,000 条中的 10 条)需要在 8 天内定期更新其日期字段。其他记录需要单独放置。这必须能够一周又一周地运行......

数据看起来像这样(更多数据可用)。主 ID 将保持不变,不会显示在下方。

起始数据如下:

'title 1','2016-09-03 00:00:00'
'title 1','2016-09-04 00:00:00'    
'title 2','2016-09-05 00:00:00'
'title 2','2016-09-06 00:00:00'
....
'title 10','2016-09-10 00:00:00'
'title 10','2016-09-11 00:00:00'    
'title 11','2016-09-12 00:00:00'
'title 11','2016-09-13 00:00:00'

结束数据如下:

'title 1','2016-09-07 00:00:00'
'title 1','2016-09-08 00:00:00'    
'title 2','2016-09-09 00:00:00'
'title 2','2016-09-10 00:00:00'
....
'title 10','2016-09-14 00:00:00'
'title 10','2016-09-15 00:00:00'    
'title 11','2016-09-16 00:00:00'
'title 11','2016-09-17 00:00:00'

现有日期是什么并不重要,查询只需向其添加 4 天并相应地更新行。

我可以在一个语句中执行此操作,还是需要执行查询以选择数据,然后执行第二个查询以进行更新?

【问题讨论】:

  • 你如何决定哪些行更新和不更新?
  • ID 是提前知道的,不会每周更改。

标签: mysql sql


【解决方案1】:

如果可以SELECT 行:

SELECT * FROM MyTable
WHERE id IN (1,2,3,4);

那么你可以UPDATE相同的行子集:

UPDATE MyTable
SET date = date + INTERVAL 4 DAY
WHERE id IN (1,2,3,4);

【讨论】:

  • 是的,我可以按照您的指示执行选择。我尝试了与您的解决方案相近的方法,但不知道 interval 功能。很好的解决方案。
【解决方案2】:

像这样简单的东西可以工作

UPDATE titles
SET date = DATE_ADD(date, INTERVAL 8 DAY)
WHERE id IN (1,2,3,4);

【讨论】:

  • 感谢您在回答之前对 ID 进行澄清。您的解决方案完美运行。将此标记为正确,因为您首先发表了评论,即使您的答案不是第一个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 2014-02-20
  • 2023-03-24
  • 2019-02-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多