根据第二列的顺序逐步更新日期字段列

时间:2014-08-31 11:27:17

标签: mysql sql wordpress

WordPress网站的MSQL DB。

我想更新表格中每行的日期列,将日期/时间设置为递增值(例如,增量值减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

更新后,命令:     通过field_date

选择*来自tbl_name

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

我看着: [Incrementing datetime field with an update statement用于SQL2005,并尝试将其用于mySQL,因为我认为这样可行(我只需将'命令更改为'命令由title_text') 。但我在将其转换为mySQL时遇到了问题。

我很欣赏有关不同方法的建议,或者让上述解决方案在mySQL中运行。

由于

伊恩

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

1 个答案:

答案 0 :(得分:3)

在MySQL中,您可以使用各种类型进行更新。最简单的方法是首先定义变量,然后进行更新:

set @rn = -1;

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