2011-10-18 120 views
1

我有一个查询(mysql)的问题。 我不得不order by date ASC问题是我也有空表中的日期。 Mysql将它们设置为0000-00-00,所以当我按日期排序时,首先显示这些日期,但我需要在末尾放置“空日期”,我该怎么办?如何按日期订购?

例子:

0000-00-00 
2011-01-01 
2010-12-12 

查询:.... ORDER BY date ASC

结果应该是:

2010-12-12 
2011-01-01 
0000-00-00 

感谢

回答

5
ORDER BY IF(date = '0000-00-00', 1, 0) ASC, date ASC 
+0

@Marco是的,真正的日期第一,所以不应该真正的日期是0时,顺序由asc? :) 再想一想? – xdazz

+0

@SalmanA:是的,正确的,我的错。 +1为xdazz!也许再睡一会儿可以帮助我;) – Marco

0

假设你正在做的:

SELECT * 
FROM table 
ORDER BY date ASC 

你可以做

SELECT *, IF(date > 0, 1, 0) AS has_date 
FROM table 
ORDER BY has_date ASC, date ASC 

我相信会为你做。