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

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

有没有关于如何单独使用SQL来实现这一点的想法?(如果需要的话,我可以用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 REGEXP 在没有 BINARY 模式的情况下区分大小写?

如何使用 IF() 条件在 MySQL 中显示真假行

按长度过滤 varbinary 字段

如何查看 rdsadmin 在 mysql 实例上的权限?

添加一个日期字段大于另一个日期字段的要求

显示值为空的所有列名

MySQL按连续值和计数分组

MySQL查询根据同一表中其他字段的值更新表中的字段

.NET Core 2.1 Identity 获取所有用户及其相关角色

加载 MySQLdb 模块时出错“您安装了 mysqlclient 还是 MySQL-python?”

Amazon RDS Aurora 与 RDS MySQL 与 EC2 上的 MySQL?

拒绝访问;您需要(至少一个)超级权限才能执行此操作

在 MySQL 中存储 UUID v4

#1273 – 未知排序规则:‘utf8mb4_unicode_520_ci’

如何在sequelize中定义多列的唯一索引

用于 UNIX 套接字文件的 mysqld_safe 目录“/var/run/mysqld”不存在

错误 1067 (42000):“created_at”的默认值无效

utf8mb4_unicode_ci 与 utf8mb4_bin

MySQL:判断用户是否存在并将其删除

MySQL:什么时候真正需要 MySQL 中的 Flush Privileges?