MySQL ORDER BY在查询中

时间:2018-07-18 17:25:54

标签: mysql

我有一个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日的记录返回结果的顶部,而不管列如何。我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以按子句顺序使用表达式;这样的事情应该为您工作:

ORDER BY COALESCE(ScheduleDateExact, ScheduleDateCurrent)

等效于

ORDER BY IFNULL(ScheduleDateExact, ScheduleDateCurrent)

或更便携

ORDER BY CASE WHEN ScheduleDateExact IS NULL THEN ScheduleDateCurrent ELSE ScheduleDateExact END