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实现这一点。
答案 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;