我有一個網頁,它有一個表中的新聞數據。mysql按日期和優先順序排列
在許多情況下,我使用下面的SQL:
SELECT * FROM table ORDER BY insertDate DESC
秩序。
ID|priority|insertDate
1 |NULL |2012-09-16
2 |NULL |2012-09-17
3 |NULL |2012-09-18
5 |NULL |2012-09-19
5 |NULL |2012-09-20
4 |1 |2010-05-10 - this is way back in the futurer
但用戶想優先考慮1條新聞。如果我用
SELECT * FROM table ORDER BY priority ASC ,insertDate DESC
它不能正常工作,我該如何必須使用才能得到結果
ID|priority|insertDate
4 |1 |2010-05-10
1 |NULL |2012-09-16
2 |NULL |2012-09-17
3 |NULL |2012-09-18
5 |NULL |2012-09-19
5 |NULL |2012-09-20
注意,這意味着查詢將無法使用索引進行排序。如果你希望所有的NULL都是最後一個而不是第一個,那麼最好有兩個SELECT,其中一個的優先級不爲空,一個的優先級爲空,並且UNION它們。我現在無法嘗試,但我想這將能夠使用索引。 – yshavit
SELECT * FROM表 ORDER BY coalesce(priority,0)DESC, insertDate DESC – Infira