mysql order by in查询

y1aodyip  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(366)

我有一个sql查询,它对单个列使用标准order by语法:

ORDER BY ScheduleDateCurrent DESC

这非常有效,除非某些记录的值为空。
我尝试指定要使用的备份列:

ORDER BY ScheduleDateExact DESC, ScheduleDateCurrent DESC

我也试过:

ORDER BY ScheduleDateExact IS NOT NULL DESC, ScheduleDateCurrent DESC

但结果并没有如我所愿。
返回的结果如下:

ScheduleDateExact:  8/3/2018
ScheduleDateExact:  8/1/2019
ScheduleDateCurrent: 8/3/2018

我要他们像这样回来:

ScheduleDateExact:  8/3/2018
ScheduleDateCurrent: 8/3/2018
ScheduleDateExact:  8/1/2019

我想把2018年8月3日的记录放在结果的最前面,不管列是什么。我该怎么做?

mwyxok5s

mwyxok5s1#

可以按从句顺序使用表达式;像这样的东西应该适合你: ORDER BY COALESCE(ScheduleDateExact, ScheduleDateCurrent) 相当于 ORDER BY IFNULL(ScheduleDateExact, ScheduleDateCurrent) 或者更便于携带 ORDER BY CASE WHEN ScheduleDateExact IS NULL THEN ScheduleDateCurrent ELSE ScheduleDateExact END

相关问题