2014-08-30 72 views
3

我有一個select語句,我想從表中選擇1條記錄。其結構是:MySQL按日期排序,首先爲NULL

id | start_time 
-------------- 
1 NULL 
2 2014-08-23 
3 2014-09-01 

我想選擇一個NULL開始時間的項目,但如果不存在,我想它選擇最新start_time。我嘗試使用ORDERLIMIT 1,但使用ORDER BY start_time要麼先給出NULL,要麼先給出NULL,然後再給出最早的起始,然後再使用NULL,然後再使用NULL。是否可能有結果順序1,3,2

回答

6

您可以使用兩種類型的表達式來得到你想要的順序:

select t.* 
from table t 
order by (start_time is null) desc, 
     start_time desc 
limit 1; 
0

你可以有兩種不同的ORDER BY表達式:

SELECT * from table ORDER BY (start_time IS NULL) DESC, start_time DESC;