Как отсортировать 10 лучших записей в порядке убывания в MySQL? - PullRequest
1 голос
/ 30 августа 2010

У меня есть таблица с записями, которые можно отсортировать по рангу.Я хочу получить первые 10 записей (что просто, используя SELECT * FROM table ORDER BY rank DESC), но затем я хочу, чтобы эти записи были в порядке убывания, поэтому тот, который имеет самый низкий ранг, окажется наверху.Как бы я это сделал?

Ответы [ 2 ]

9 голосов
/ 30 августа 2010
(SELECT * FROM table ORDER BY rank DESC LIMIT 10) ORDER BY rank ASC;

Это то, что вы ищете?

3 голосов
/ 30 августа 2010

Вы должны быть в состоянии сделать:

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 решение возвращает тот же результат.

...