我有一个select语句,我想从表中选择1条记录。结构是:
id | start_time
--------------
1 NULL
2 2014-08-23
3 2014-09-01
我想选择具有NULL开始时间的项目,但如果不存在,我希望它选择最新的start_time
。我尝试将ORDER
与LIMIT 1
一起使用,但是使用ORDER BY start_time
要么首先给出NULL,然后是最早的开始,要么是最新的,然后是NULL。是否可以生成结果顺序1,3,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;