如何在mySQL中按降序排序前10个条目?

时间:2010-08-30 09:45:17

标签: mysql sql-order-by

我有一个表格,可以按等级排序。我想获得前10个条目(使用SELECT * FROM table ORDER BY rank DESC这很简单),但后来我希望这些条目按降序排列,因此排名最低的条目最终位于顶部。我该怎么做?

2 个答案:

答案 0 :(得分:9)

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

这是你要找的吗?

答案 1 :(得分: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会返回相同的结果。