我有一个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日的记录放在结果的最前面,不管列是什么。我该怎么做?
1条答案
按热度按时间mwyxok5s1#
可以按从句顺序使用表达式;像这样的东西应该适合你:
ORDER BY COALESCE(ScheduleDateExact, ScheduleDateCurrent)
相当于ORDER BY IFNULL(ScheduleDateExact, ScheduleDateCurrent)
或者更便于携带ORDER BY CASE WHEN ScheduleDateExact IS NULL THEN ScheduleDateCurrent ELSE ScheduleDateExact END