2010-08-30 155 views
1

我有一个表可以按等级排序。我想获得排名前10的条目(这很简单,使用SELECT * FROM table ORDER BY rank DESC),但是我希望这些条目按降序排列,所以排名最低的条目最终排在最前面。我将如何做到这一点?如何在mySQL中按降序对前10个条目进行排序?

回答

9
(SELECT * FROM table ORDER BY rank DESC LIMIT 10) ORDER BY rank ASC; 

这是你要找的吗?

+0

@Martin:它似乎在MySQL中工作正常(只要'反映在'table'中)...我不知道这是可能的:) – 2010-08-30 09:56:51

+0

+1 And my apologies,@Daniel - Thanks让我知道! – 2010-08-30 10:04:07

3

你应该能够做到:

SELECT * 
FROM  (SELECT * FROM `table` ORDER BY rank DESC LIMIT 10) dt 
ORDER BY dt.rank ASC; 

我想你有一个这样的表:

CREATE TABLE `table` (id int, rank int); 
INSERT INTO `table` VALUES (1, 20), (2, 19), (3, 18), (4, 17), (5, 16), (6, 15), 
          (7, 14), (8, 13), (9, 12), (10, 11), (11, 10), 
          (12, 9), (13, 8), (14, 7), (15, 6), (16, 5), (17, 4), 
          (18, 3), (19, 2), (20, 1); 

你会得到这样的结果:

+------+------+ 
| id | rank | 
+------+------+ 
| 10 | 11 | 
| 9 | 12 | 
| 8 | 13 | 
| 7 | 14 | 
| 6 | 15 | 
| 5 | 16 | 
| 4 | 17 | 
| 3 | 18 | 
| 2 | 19 | 
| 1 | 20 | 
+------+------+ 
10 rows in set (0.02 sec) 

更新:

@onik's solution返回相同的结果。

相关问题