我正在尝试根据整数值'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
答案 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