php - Mysql ORDER BY 使用日期数据行

标签 php sql mysql sql-order-by

我有这样的查询:

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 查询?

最佳答案

ORDER BY date = '0000-00-00' ASC, date ASC, title ASC

关于php - Mysql ORDER BY 使用日期数据行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/880430/

相关文章:

php - 在php中使用临时表执行多个查询

javascript - 我的 javascript/html 和 node.js 逻辑位于不同的服务器上 - 它们可以安全地交互吗?

sql - 更改 varchar 列的最大长度?

php - 如何使用连接编写mysql查询并在删除一个表中的记录时仍然显示部分信息?

php - 在 Eclipse 中使用 XDebug 远程调试时,PHP 源文件是否需要在本地和远程存在?

php - 我如何使用 "strcspn"或 "any other Approach to change key of Array"来获得适当的结果?

sql - sqlite中的复合主键

sql - 如何检索刚插入数据库的记录的特定字段

php - 计算可能性 PHP、MySqli

php - 分割mysql行中的字符串