2010-08-30 33 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返回相同的結果。

相關問題