Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL按日期排序,首先为空_Mysql_Sql - Fatal编程技术网

MySQL按日期排序,首先为空

MySQL按日期排序,首先为空,mysql,sql,Mysql,Sql,我有一个select语句,我想从表中选择一条记录。结构如下: id | start_time -------------- 1 NULL 2 2014-08-23 3 2014-09-01 我希望选择起始时间为空的项目,但如果不存在,我希望它选择最新的起始时间。我曾尝试将顺序与限制1一起使用,但使用按开始时间排序会首先给出NULL,然后是最早的开始,或者最晚的开始然后是NULL。是否可以使用结果顺序1,3,2?您可以使用两个排序表达式来获得所需的顺序: select t.*

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

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

我希望选择起始时间为空的项目,但如果不存在,我希望它选择最新的
起始时间
。我曾尝试将
顺序
限制1
一起使用,但使用
按开始时间排序
会首先给出NULL,然后是最早的开始,或者最晚的开始然后是NULL。是否可以使用结果顺序
1,3,2

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

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

您可以有两个不同的
排序依据表达式:

从表中按顺序选择*(开始时间为空)DESC,开始时间DESC;