【发布时间】:2010-10-27 04:43:21
【问题描述】:
我有一个类似这样的查询:
SELECT
title, desc, date
FROM
tablename
ORDER BY
date ASC, title ASC;
当数据实际上有一个日期时可以正常工作。问题是,日期提交是可选的,所以我有时会得到 0000-00-00 作为日期,这会导致将所有未注明日期的行都放在最前面。
所以,我然后尝试了这个:
SELECT
title, desc, date
FROM
tablename
ORDER BY
date DESC, title ASC;
哪种有效,但不是真的——所有日期(非 0000-00-00)的项目按降序排列,然后是所有日期为 0000-00-00 的项目。
我想做的是按日期 ASC 排序,标题 ASC,但前提是日期!= 0000-00-00,但如果日期 = 0000-00-00,那么只需按标题 ASC 排序(我想我的解释是正确的)。
我能想到的唯一方法是基于非 SQL 的(或者 2 个查询,或者,每个查询只填充一个内存数组,然后我使用 PHP 进行排序)。
有没有可以做到这一点的 SQL 查询?
【问题讨论】:
-
MySQL 不支持 NULL 日期吗?
标签: php sql mysql sql-order-by