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

我想使用SQL按截止日期对任务进行排序,但将没有截止日期的任务放在结果集的后面.按照现在的情况,空日期首先显示,其余日期按截止日期从早到晚排序.

有没有关于如何单独使用SQL来实现这一点的 idea ?(如果需要的话,我可以用PHP来实现,但只使用SQL的解决方案会很好.)

谢谢

推荐答案

这里有一个只使用标准SQL而不是ISNULL()的解决方案.该函数不是标准的SQL,可能无法在其他品牌的RDBMS上使用.

SELECT * FROM myTable
WHERE ...
ORDER BY CASE WHEN myDate IS NULL THEN 1 ELSE 0 END, myDate;

Mysql相关问答推荐

MySQL INSERT INSERT ON DIPLICATE KEY UPDATE WITH COMPAY PRIMARY KEY失败

含有子查询的MySQL函数出现语法错误

可以优化这个带有重复WHERE子句的查询吗?

SQL Select 最大值和平均值

MySQL中的where语句会 destruct 全外连接.

为大表优化 Django 模型

mysqli 无法以非 root 用户身份连接

从 MySQL 8.0.12 升级到 8.0.32 时出错

如何在Pandas 中使用 to_sql

如何优化使用多个 LEFT JOIN 和 GROUP BY 子句的慢速 MySQL 查询?

在 MySQL 中跨日期和位置计算和排序实体的共现

go&mysql&docker 拒绝连接

MySQL UPDATE 锁会因为连续的 SHARE 锁而饿死吗?

如果我创建一个没有主键的表然后添加一个主键,主键是聚集索引吗?

使用 MySQL 在树中查找 Leaf

MySQL 视图

使用 mysql 处理非常大的数据

将行插入 MySQL 数据库的最有效方法

表被指定了两次,既作为更新的目标,又作为 mysql 中数据的单独源

关闭 PHP 和 MySQL 上的警告和错误