2014-08-31 83 views
1

用於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 

更新後,然後命令: 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。

+0

是的。只需使用Wordpress codex – Strawberry 2014-08-31 12:39:32

+0

嗨草莓。謝謝回覆。是的,我在這個網站上花了很多時間,並且有很多有用的信息。然而,我還沒有找到解決我的問題的方法,我寧願不添加插件,如果可能的話。這就是我查看SQL路由的原因。 – EyePeaSea 2014-08-31 13:26:24

回答

3

在MySQL中,你可以做各種更新。最簡單的方法是首先定義一個變量,然後進行更新:

set @rn = -1; 

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

Gordan - 謝謝!這看起來正是我所追求的。我只是有一個小問題,但現在你已經給了我答案,我會花一些時間在它上面。再次感謝。對不起 - 沒有足夠的代表upvote - 但你有我的感謝! Ian – EyePeaSea 2014-08-31 20:18:51

+0

Gordan - 全部排序,謝謝。這只是額外的;在那天拋我之後。再次感謝。 – EyePeaSea 2014-09-04 11:31:01

+0

@EyePeaSea。 。 。這是一個錯字。 – 2014-09-04 14:32:54