我有一个表格,可以按等级排序。我想获得前10个条目(使用SELECT * FROM table ORDER BY rank DESC
这很简单),但后来我希望这些条目按降序排列,因此排名最低的条目最终位于顶部。我该怎么做?
答案 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会返回相同的结果。