可以使用SQL按date进行sorting,但将空date放在结果集的后面?
我在MySQL数据库中有一堆的任务,其中一个字段是“截止date”。 并不是每个任务都必须有截止date。
我想用SQL按截止date对任务进行sorting,但在结果集的后面放置没有最后期限的date。 就像现在一样,无效date首先显示,其余按最早的截止datesorting。
任何关于如何单独使用SQL的想法? (如果需要的话,我可以用PHP来完成,但是只有SQL的解决scheme会很棒。)
谢谢!
这是一个只使用标准SQL的解决scheme,而不是ISNULL()。 该function不是标准的SQL,可能不适用于其他品牌的RDBMS。
SELECT * FROM myTable WHERE ... ORDER BY CASE WHEN myDate IS NULL THEN 1 ELSE 0 END, myDate;
SELECT * FROM myTable WHERE ... ORDER BY ISNULL(myDate), myDate
SELECT foo, bar, due_date FROM tablename ORDER BY CASE ISNULL(due_date, 0) WHEN 0 THEN 1 ELSE 0 END, due_date
所以你有2个子句的顺序。 第一个将所有非空值放在前面,然后按到期日sorting