J'ai un tableau contenant des entrées qui peuvent être triées par rang. Je veux obtenir les 10 premières entrées (ce qui est simple en utilisant SELECT * FROM table ORDER BY rank DESC
), mais je veux que ces entrées soient classées par ordre décroissant, de sorte que celle qui a le rang le plus bas se retrouve en haut de la liste. Comment faire ?
Réponses
Trop de publicités?
Daniel Vassallo
Points
142049
Vous devriez pouvoir le faire :
SELECT *
FROM (SELECT * FROM `table` ORDER BY rank DESC LIMIT 10) dt
ORDER BY dt.rank ASC;
Je suppose que vous avez une table comme celle-ci :
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);
Vous obtiendrez le résultat suivant :
+------+------+
| 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)
UPDATE :
La solution de @onik donne le même résultat.