Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按除0以外的升序值对MySQL查询排序_Mysql_Sorting_Int - Fatal编程技术网

按除0以外的升序值对MySQL查询排序

按除0以外的升序值对MySQL查询排序,mysql,sorting,int,Mysql,Sorting,Int,我正在做一个任务管理工具。任务的到期日期以时间戳的形式存储在MySQL列dueTime中,该列的类型为INT。如果任务没有到期日期,则dueTime列的值为0。任务需要按时间升序显示,没有到期时间的任务稍后会显示在列表中 我当前的解决方案是从dueTime>0的任务中选择*按dueTime排序,获取数据,然后从dueTime=0的任务中运行第二个SELECT*查询,然后添加该数据。它工作得很好,但我想通过一个查询来完成这一点。我也不希望添加“有适当时间”的属性,因为这似乎是不必要的 我看到的其他

我正在做一个任务管理工具。任务的到期日期以时间戳的形式存储在MySQL列dueTime中,该列的类型为INT。如果任务没有到期日期,则dueTime列的值为0。任务需要按时间升序显示,没有到期时间的任务稍后会显示在列表中

我当前的解决方案是从dueTime>0的任务中选择*按dueTime排序,获取数据,然后从dueTime=0的任务中运行第二个SELECT*查询,然后添加该数据。它工作得很好,但我想通过一个查询来完成这一点。我也不希望添加“有适当时间”的属性,因为这似乎是不必要的

我看到的其他问题涉及到使用GROUPBY,但我不确定在时间戳上使用GROUPBY是否必要或有效


提前感谢您的帮助

我认为您至少有3种可能性:

不要使用0作为非到期时间,而是99999,这样您就可以通过dueTime ASC保持自然顺序。那不是很干净

使用前面提到的两个查询,并将它们与

正如Randy已经提到的,在ORDERBY子句中使用。另见此处:

你可以试试这个:

SELECT * FROM tasks ORDER BY dueDate IS NULL,dueTime

您可以在ORDER BY子句中放入CASE语句。如果按dueTime=0进行排序,则dueTime=0的行将按其他行排序。