可以使用SQL按日期排序,但将空日期放在结果集的后面?

52 mysql sql

我在MySQL数据库中有很多任务,其中一个字段是"截止日期".并非每项任务都必须在截止日期之前完成.

我想使用SQL按截止日期对任务进行排序,但是将没有截止日期的日期放在结果集的后面.就像现在一样,空日期首先出现,然后其余部分按截止日期排序到最晚.

有关如何单独使用SQL的任何想法?(如果需要的话,我可以用PHP来做,但是只有SQL的解决方案会很棒.)

谢谢!

Bil*_*win 67

这是一个仅使用标准SQL而不是ISNULL()的解决方案.该函数不是标准SQL,可能不适用于其他品牌的RDBMS.

SELECT * FROM myTable
WHERE ...
ORDER BY CASE WHEN myDate IS NULL THEN 1 ELSE 0 END, myDate;
Run Code Online (Sandbox Code Playgroud)


nic*_*ckf 29

SELECT * FROM myTable
WHERE ...
ORDER BY ISNULL(myDate), myDate
Run Code Online (Sandbox Code Playgroud)

  • 是的 - 只有一个.http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_isnull (3认同)