MySQL编号排序

时间:2013-04-09 13:53:07

标签: mysql sql sorting numbers

假设我的表numbers包含字段num INT

条目:

364
0
123
0
321
4215
12138

我想对它们进行排序ASC。问题是我希望将零置于底部。

我想要的几乎是

SELECT num FROM number WHERE num != 0 ORDER BY num ASC
SELECT num FROM number WHERE num = 0

这可能是以一种单一查询的方式完成的吗?

我想要实现的目标是:

123
321
364
4215
12138
0
0

我不知道这是否可能是问的原因。谢谢。

2 个答案:

答案 0 :(得分:5)

在order by子句

中添加此条件
ORDER BY (num = 0) ASC, num ASC

或者您可以默认省略ASC

ORDER BY (num = 0), num

输出

╔═══════╗
║  NUM  ║
╠═══════╣
║   123 ║
║   321 ║
║   364 ║
║  4215 ║
║ 12138 ║
║     0 ║
║     0 ║
╚═══════╝

答案 1 :(得分:3)

SELECT num FROM number ORDER BY IF(num=0,1,0),num;