【发布时间】:2013-03-28 08:45:25
【问题描述】:
我正在制作一个任务管理工具。任务的到期日期作为时间戳存储在名为dueTime 的 MySQL 列中,类型为 INT。如果任务没有到期日(很多没有),dueTime 列的值为 0。任务需要按到期时间升序的顺序显示,没有到期的任务时间出现在列表的后面。
我当前的解决方案是SELECT * FROM tasks WHERE dueTime > 0 ORDER BY dueTime,获取数据,然后运行SELECT * FROM tasks WHERE dueTime = 0 的第二个查询,然后添加该数据。它工作得很好,但我想只用一个查询来完成这个。我也宁愿不必添加“有时间”的属性,因为这似乎没有必要。
我看到的其他问题涉及使用GROUP BY,但我不确定在时间戳上使用它是否必要或有效。
提前感谢您的帮助!
【问题讨论】:
-
可以在 ORDER BY 子句中加入 CASE 语句。
-
如果您执行
ORDER BY dueTime = 0, dueTime,dueTime = 0 的行将排在其他行之后。