【问题标题】:Incrementally update date field column based on order of a second column根据第二列的顺序增量更新日期字段列
【发布时间】:2014-08-31 11:27:17
【问题描述】:

用于 WordPress 网站的 MSQL 数据库。

我想更新表中每一行的日期列,将日期/时间设置为递增值(例如,将值递增 1 天)。我进行更新的顺序应该基于行中另一列的文本排序。使用的实际日期值不相关(它可以从 2001-01-01 00:00:00 开始,并以秒、分钟、小时或天为单位递增)。

表格中两列的示例:

field_date         , title_text
2014-08-20 09:00:27, AAA-Entry
2014-08-24 10:00:00, ZZZ-Entry
2014-08-27 10:15:00, MMM-Entry

因此,第一个“title_text”(按字母排序)的行应该是最新的日期。基于 title_text 的下一行应该获得稍早的日期,依此类推,直到最后一行(基于 title_text)具有最旧的日期。所以上面显示的数据最终看起来像:

field_date         , title_text
2000-01-03 00:00:00, AAA-Entry
2000-01-01 00:00:00, ZZZ-Entry
2000-01-02 00:00:00, MMM-Entry

更新后命令: select * from tbl_name order by field_date

将显示也将按 title_text 字段的字母顺序排列的输出。这相当于运行: select * from tbl_name order by title_text

我在看: [Incrementing datetime field with an update statement 用于 SQL2005 并试图让它在 mySQL 上运行,因为我认为这会起作用(我只是将 'order by' 语句更改为 'order by title_text')。但我在将其转换为 mySQL 时遇到了问题。

如果有任何关于不同方法或让上述解决方案在 mySQL 中工作的建议,我将不胜感激。

谢谢

伊恩

注意:这背后的原因是 Wordpress 根据发布日期填充列表框/搜索结果,但我希望根据标题文本对其进行排序。 可能有一个“Wordpress”答案(或插件)来做到这一点(如果你知道,请随时告诉我;-)),但从学习的角度来看,我也想了解如何使用 mySQL 实现这一点。

【问题讨论】:

  • 是的。只需使用 Wordpress 代码
  • 嗨草莓。谢谢回复。是的,我在那个网站上花了很多时间,并且有很多有用的信息。但是,我还没有找到解决我的问题的方法,如果可能的话,我宁愿不添加插件。这就是我查看 SQL 路由的原因。

标签: mysql sql wordpress


【解决方案1】:

在 MySQL 中,您可以使用排序进行更新。最简单的方法是先定义一个变量,然后进行更新:

set @rn = -1;

update t
    set field_date = date('2000-01-01') + interval (@rn := @rn + 1) day
    order by title_text desc;

【讨论】:

  • 戈丹 - 谢谢!这看起来正是我所追求的。我只是遇到了一个琐碎的语法问题,但既然你已经给了我答案,我会花一些时间来解决这个问题。再次感谢。抱歉 - 没有足够的代表来投票 - 但我感谢你!伊恩
  • Gordan - 已排序,谢谢。只是额外的;那天之后,我被扔了。再次感谢。
  • @EyePeaSea 。 . .那是一个错字。
  • 对不起——这听起来不像是批评。只是对像我这样可能会找到此线程的其他 SQL 尼安德特人的评论:-)
猜你喜欢
  • 2022-01-01
  • 2020-04-06
  • 1970-01-01
  • 2013-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-06
  • 2017-11-16
相关资源
最近更新 更多