考虑以下示例:
+---------+------------+
| value | name |
+---------+------------+
| 42 | abresas |
| 0 | dionyziz |
| 6 | dionyziz2 |
| 0 | izual |
| 8 | kokos |
| 37 | kostis90gr |
| 0 | test |
| 35 | usertest |
+---------+------------+
我想按值的升序对此进行排序,但我希望所有值为0的名称都显示在底部。所以排序顺序应该是: 6,8,35,37,42,0,0,0
有没有想过是否可以使用sql?
答案 0 :(得分:7)
不确定。使用IF function:
ORDER BY IF(value=0,1,0), value
答案 1 :(得分:4)
是的,你只需要按顺序调整顺序:
order by (case when value = 0 then 999999 else value end)
是一种方法,假设有一个最大值。另一种更通用的方法是:
order by (case when value = 0 then 1 else 0 end), value
答案 2 :(得分:-1)
您可以使用UNION关键字组合两个不同查询的结果,如下所示:
(select * from tableName where value>0 order by value)
union
(select * from tableName where value=0)