MySQL按日期排序,首先为NULL

时间:2014-08-30 14:58:05

标签: mysql sql

我有一个select语句,我想从表中选择1条记录。结构是:

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

我想选择具有NULL开始时间的项目,但如果不存在,我希望它选择最新的start_time。我尝试将ORDERLIMIT 1一起使用,但是使用ORDER BY start_time要么首先给出NULL,然后是最早的开始,要么是最新的,然后是NULL。是否可以生成结果顺序1,3,2

2 个答案:

答案 0 :(得分:6)

您可以使用两个排序表达式来获得所需的顺序:

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

答案 1 :(得分:0)

您可以有两个不同的ORDER BY表达式:

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