使用sql重新排序整数值0以外的整数

时间:2010-02-07 19:37:29

标签: sql mysql database

我正在尝试根据整数值'place'从我的MYSQL数据库表中获取一个有序的行列表。

SELECT * FROM mytable
ORDER BY place;

这没关系,除了所有值为place = 0的行应该出现在表的末尾。

所以,如果我的表是:

name place
---- -----
John 1
Do   2
Eric 0
Pete 2

应该成为:

name place
---- -----
John 1
Do   2
Pete 2
Eric 0

3 个答案:

答案 0 :(得分:6)

order by case when place = 0 then 1 else 0 end asc, place asc

通过这种方式,您可以获得所有先订购的非零。

答案 1 :(得分:4)

SELECT *
FROM myTable
ORDER BY place>0 DESC, place

是没有CASE

的解决方案

答案 2 :(得分:2)

SELECT *
FROM myTable
ORDER BY CASE place WHEN 0 THEN 9999 ELSE place END

这种方法意味着我们知道9999(或其他一些值)大于place列中所有可能的值。

或者我们可以按两个值排序:

   ORDER BY CASE place WHEN 0 THEN 0 ELSE -1 END, place