我正在制作一个任务管理工具。任务的截止日期存储为名为dueTime
且类型为INT的MySQL列中的时间戳。如果任务没有到期日(许多没有),则dueTime列的值为0.任务需要按升序 dueTime的顺序显示,而没有到期的那些时间出现在名单的后面。
我当前的解决方案是SELECT * FROM tasks WHERE dueTime > 0 ORDER BY dueTime
,抓取数据,然后运行SELECT * FROM tasks WHERE dueTime = 0
的第二个查询,然后添加该数据。它工作正常,但我想用一个查询完成这个。我也不想添加“有适当时间”的属性,因为这似乎是不必要的。
我见过的其他问题涉及使用GROUP BY
,但我不确定在时间戳上使用它是否必要或有效。
提前感谢您的帮助!
答案 0 :(得分:0)
我认为你至少有3种可能性:
不要使用0作为“没有适当的时间”,而是使用99999,所以你可以保持自然的“ORDER BY dueTime ASC”。 (那不是很干净......)
使用您已经提到的两个查询,并将它们与UNION
在你的ORDER BY子句中使用CASE,正如Randy已经提到的那样。另见:mysql custom sort
答案 1 :(得分:0)
SELECT * FROM tasks ORDER BY dueDate IS NULL,dueTime