我讀過一些有相同問題的文章。我試圖調整自己的答案,但沒有成功。 我想根據狀態對列進行排序,而不是根據狀態對列進行進一步排序。 願下面的查詢將清除我的觀點mysql中的條件排序子句
SELECT a.*,STR_TO_DATE(d_date, "%m/%d/%Y")>CURDATE() as status
FROM table AS a ORDER BY status DESC,
IF(status=0,
'DATEDIFF(STR_TO_DATE(a.d_date, "%m/%d/%Y"),CURDATE()) DESC',
'DATEDIFF(STR_TO_DATE(a.d_date, "%m/%d/%Y"),CURDATE()) ASC')
UPDATE: 以下查詢
SELECT a . * , STR_TO_DATE(d_date, "%m/%d/%Y") > CURDATE() AS
STATUS
FROM `table` AS a
ORDER BY STATUS DESC , IF(
STATUS =0, DATEDIFF(STR_TO_DATE(a.d_date, "%m/%d/%Y") , CURDATE()) DESC , DATEDIFF(STR_TO_DATE(a.d_date, "%m/%d/%Y") , CURDATE()) ASC)
LIMIT 0 , 30
我有下面的錯誤
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DESC, DATEDIFF(STR_TO_DATE(a.d_date, "%m/%d/%Y"),CURDATE()) ASC) LIMIT ' at line 4
後如果我的表名是table
比對於此記錄
d_date
06/28/2012
06/23/2012
06/20/2012
06/19/2012
如果當前日期爲06/21/2012
輸出應該是
d_date status
06/23/2012 1
06/28/2012 1
06/20/2012 0
06/19/2012 0
可能會將此信息就足夠了。如果還不清楚,請告訴我。
感謝
不要在你的'IF'使用引號..否則它將被視爲一個字符串。 – arnep
是'IF'支持mysql或不.Iam可疑 – 2012-06-21 11:34:03
@Somebodyisintrouble:允許。請參閱[這裏](http://dev.mysql.com/doc/refman/5.5/en/if-statement.html) –