2014-09-23 60 views
0

我有一张表,我想展示一些事件。我想在将来按升序排列我的事件,而按照降序排列我的事件。我怎样才能做到这一点与一个查询?订购一个字段,包括ASC和DESC

我目前的订单

Dec 23 
Nov 10 
Nov 04 
Sep 12 
Aug 01 
Jul 23 

顺序我想

Nov 4 ** changed place 
Nov 10 
Dec 23 ** changed place 
Sep 12 
Aug 01 
Jul 23 

提前非常感谢。

+0

请与我们分享您已经尝试了什么。 – 2014-09-23 13:04:11

+0

你能解释一下我想要的命令吗?未来的升级和过去的desc?不明白.. – 2014-09-23 13:05:48

+0

正如您在示例第一个示例中所看到的那样,使用普通的“ORDER BY eventDate DESC”从日期数据库中查询日期,这意味着日期只是按降序显示。我希望将来的日期按升序显示 - WHERE eventDate> = NOW()ORDER BY eventDate ASC' - 以及过去显示的日期降序 - WHERE eventDate wally 2014-09-23 13:10:42

回答

-1

你问从当前日期的距离进行排序:

SELECT * 
FROM table 
ORDER BY IF(date_field >= NOW()),0,1), ABS(DATEDIFF(NOW(), date_field)) 
+2

请使用代码格式并向您的代码专用答案添加解释。 – DanFromGermany 2014-09-23 13:10:33

+0

这将交织结果,而不是让它们分开。 – barryhunter 2014-09-23 14:30:44

+1

尽管它构成了答案的一部分,但可以通过IF(eventDate> = NOW()),0,1)ASC,days ASC'来首先将它们分离出来,然后按距离排序。 – barryhunter 2014-09-23 14:33:15