通过升序值EXCEPT FOR 0对MySQL查询进行排序

时间:2013-03-27 21:40:04

标签: mysql sorting int

我正在制作一个任务管理工具。任务的截止日期存储为名为dueTime且类型为INT的MySQL列中的时间戳。如果任务没有到期日(许多没有),则dueTime列的值为0.任务需要按升序 dueTime的顺序显示,而没有到期的那些时间出现在名单的后面。

我当前的解决方案是SELECT * FROM tasks WHERE dueTime > 0 ORDER BY dueTime,抓取数据,然后运行SELECT * FROM tasks WHERE dueTime = 0的第二个查询,然后添加该数据。它工作正常,但我想用一个查询完成这个。我也不想添加“有适当时间”的属性,因为这似乎是不必要的。

我见过的其他问题涉及使用GROUP BY,但我不确定在时间戳上使用它是否必要或有效。

提前感谢您的帮助!

2 个答案:

答案 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