我有一个SQL查询,它对单列使用标准的ORDER BY语法:
ORDER BY ScheduleDateCurrent DESC
对于某些记录,当该值为NULL时,这非常有用。
我尝试指定要使用的备用列:
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日的记录返回结果的顶部,而不管列如何。我该怎么做?
答案 0 :(得分:1)
您可以按子句顺序使用表达式;这样的事情应该为您工作:
ORDER BY COALESCE(ScheduleDateExact, ScheduleDateCurrent)
等效于
ORDER BY IFNULL(ScheduleDateExact, ScheduleDateCurrent)
或更便携
ORDER BY CASE WHEN ScheduleDateExact IS NULL THEN ScheduleDateCurrent ELSE ScheduleDateExact END