2011-05-11 58 views
0

我通過DATE_MODIFIED降序排序列表Mysql - ORDER BY - 可以使用條件嗎?

此問題是,當一個新的記錄輸入,DATE_MODIFIED是空日期0000-00-00 00:00:00

所以這個記錄將在底部,而不是列表頂部。

如何對此進行排序? :(

注:我不插入與現在日期DATE_MODIFIED,因爲我有一個字段date_create

+0

當你添加記錄添加當前日期,修改日期,與創建日期相同 – Ibu 2011-05-11 03:34:34

+0

你有另一種解決方案嗎?它會用在沒有更好的解決方案時 – Chameron 2011-05-11 03:36:44

+0

我加了2個替代方案,檢查一下是否可以爲你工作 – Ibu 2011-05-11 03:42:19

回答

1

ORDER BY COALESCE(DATE_MODIFIED,DATE_CREATED)DESC;

但是,如果您在執行INSERT時將date_modified設置爲CURRENT_TIMESTAMP,則性能會更好,因爲已經提示過了。

+0

謝謝,我會試試看 – Chameron 2011-05-11 03:53:58

0

我覺得你需要修復空日期的問題上插入你爲什麼不設置。在DATE_MODIFIED =現在插入的時間?

+0

但是我已經提交了date_create – Chameron 2011-05-11 03:38:25

+0

爲什麼修改日期不一樣。實際上,一般來說,修改總是設置爲元素第一次創建時創建的日期。你的應用可能會有所不同,我只是泛泛而談。 – 2011-05-11 03:39:32

+0

我的BOSS喜歡他的方式:))謝謝 – Chameron 2011-05-11 03:53:36

0

您可以排序創建日期先做兩件事情,然後LAST_MODIFIED

SELECT * FROM table ORDER BY created DESC,last_modified DESC 

也可以添加默認的修改時間爲當前時間

INSERT INTO table (....,last_modified)VALUES (....,NOW()); 

現在你可以很容易地做出排序