2011-08-17 65 views
2

我想排序的排名列表的运动员,所有这些都有排名位置。然而,有些是新的巡回赛,所以他们的排名是0.如果我简单地按位置ASC排序,0将首先出现,我希望他们在剩下之后出现。我曾尝试类似:MySQL排序排名名单与位置0

SELECT * FROM rankings WHERE season='$season' ORDER BY CASE position = 0 THEN 999, ELSE position ASC 
+0

可能重复其他人面前一定值](http://stackoverflow.com/questions/4371193/mysql-query-order-by-certain-values-before-others) –

+0

你可以举一个例子,说明你想如何看待输出。我不知道我是否完全按照你希望的结构看起来。 –

回答

0

试试这个:

SELECT *, (CASE position WHEN 0 THEN 999 ELSE position) AS custom_sort FROM rankings WHERE season='$season' ORDER BY custom_sort ASC 
2

可以严格ORDER BY子句中处理它

SELECT * 
FROM rankings 
WHERE season='$season' 
ORDER BY (position=0) ASC, position ASC 
[MySQL查询订单的