查詢資料表,按照日期 cdate 進行排序, 當天的排在最前面,然后后面的按照日期倒序
比如 :
1 2020-11-12
2 2020-11-12
3 2020-12-10;
4 2020-11-28
5 2020-11-05
6 2020-10-10
當天排在最前面可以按照
select * from table ORDER BY CASE cdate WHEN current_date() THEN 0 ELSE 1 END
但這個只能是將當天的排在前面,后面的日期是隨機的,希望后面的日期能按序排列
謝謝
uj5u.com熱心網友回復:
可以把當天日期減去足夠大一個值,讓日期最小,然后再order by
select *,case datediff(cdate,current_date())
when 0 then date_add(cdate, INTERVAL -99999 DAY)
else cdate end as sort_date
from table ORDER BY sort_date
uj5u.com熱心網友回復:
樓主要倒序,你只需要 樓上的日期減 改為日期 加即可。uj5u.com熱心網友回復:
沒那么麻煩,直接執行這個陳述句就可以了。SELECT T.* FROM (
SELECT '2020-11-12' D FROM DUAL UNION ALL
SELECT '2020-11-12' D FROM DUAL UNION ALL
SELECT '2020-12-10' D FROM DUAL UNION ALL
SELECT '2020-11-28' D FROM DUAL UNION ALL
SELECT '2020-11-05' D FROM DUAL UNION ALL
SELECT '2020-10-10' D FROM DUAL) T
ORDER BY IF(D=DATE_FORMAT(CURRENT_DATE(), '%Y-%m-%d'),0,1) , D DESC ;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/212725.html
標籤:MySQL
