按除0以外的升序值对MySQL查询排序
我正在做一个任务管理工具。任务的到期日期以时间戳的形式存储在MySQL列dueTime中,该列的类型为INT。如果任务没有到期日期,则dueTime列的值为0。任务需要按时间升序显示,没有到期时间的任务稍后会显示在列表中 我当前的解决方案是从dueTime>0的任务中选择*按dueTime排序,获取数据,然后从dueTime=0的任务中运行第二个SELECT*查询,然后添加该数据。它工作得很好,但我想通过一个查询来完成这一点。我也不希望添加“有适当时间”的属性,因为这似乎是不必要的 我看到的其他问题涉及到使用GROUPBY,但我不确定在时间戳上使用GROUPBY是否必要或有效按除0以外的升序值对MySQL查询排序,mysql,sorting,int,Mysql,Sorting,Int,我正在做一个任务管理工具。任务的到期日期以时间戳的形式存储在MySQL列dueTime中,该列的类型为INT。如果任务没有到期日期,则dueTime列的值为0。任务需要按时间升序显示,没有到期时间的任务稍后会显示在列表中 我当前的解决方案是从dueTime>0的任务中选择*按dueTime排序,获取数据,然后从dueTime=0的任务中运行第二个SELECT*查询,然后添加该数据。它工作得很好,但我想通过一个查询来完成这一点。我也不希望添加“有适当时间”的属性,因为这似乎是不必要的 我看到的其他
提前感谢您的帮助 我认为您至少有3种可能性: 不要使用0作为非到期时间,而是99999,这样您就可以通过dueTime ASC保持自然顺序。那不是很干净 使用前面提到的两个查询,并将它们与 正如Randy已经提到的,在ORDERBY子句中使用。另见此处: 你可以试试这个:
SELECT * FROM tasks ORDER BY dueDate IS NULL,dueTime
您可以在ORDER BY子句中放入CASE语句。如果按dueTime=0进行排序,则dueTime=0的行将按其他行排序。