同一字段上的多个排序顺序

时间:2012-07-09 15:51:09

标签: mysql sql

考虑以下示例:

+---------+------------+
| 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?

3 个答案:

答案 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)