2014-09-23 62 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