假设我的表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
我不知道这是否可能是问的原因。谢谢。
答案 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;