我需要对 MySql 数据库中的表执行查询,其中结果行的顺序如下所示:
如果今天是 10/09/12:
...
11/09/12
12/09/12
15/09/12
08/09/12 <--here start the past dates
07/09/12
05/09/12
....
有没有办法直接在 MySQL 中实现这一点?
我以这种方式解决了:
首先,select 语句包含一个新的布尔值,通过以下方式标记日期是过去还是未来:
SELECT DISTINCT *,CASE WHEN startdate < CURDATE() THEN 0
ELSE 1 END AS past_or_future
其次,我做了一个双重“订购者”:首先在过去的或未来布尔值上,然后在日期上,条件如下:
ORDER BY past_or_future DESC , CASE WHEN past_or_future = 1 THEN startdate END ASC, CASE WHEN past = 0 THEN startdate END DESC
通过这种方式,我首先获得了按日期排序的所有即将到来的日期(从较低的值到较高的值),然后是从该日期排序的所有过去的日期(从较高的到较低的)