3 votes

Comment trier les 10 premières entrées par ordre décroissant dans mySQL ?

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 ?

13voto

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

Est-ce que c'est ce que vous recherchez ?

5voto

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X