2010-08-30 4 views
1

J'ai une table 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 ensuite je veux que ces entrées dans l'ordre décroissant, de sorte que celui avec le rang le plus bas se termine en haut. Comment ferais-je cela?Comment trier les 10 premières entrées par ordre décroissant dans mySQL?

Répondre

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

Est-ce ce que vous cherchez?

+0

@Martin: Il semble bien fonctionner dans MySQL (aussi longtemps que 'table' est entouré de dos) ... Je ne savais pas que c'était possible non plus :) :) –

+0

+1 Et mes excuses, @Daniel - Merci pour me le faire savoir! –

3

Vous devriez être en mesure de 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 ceci:

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 un résultat comme celui-ci:

+------+------+ 
| 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) 

MISE À JOUR:

@onik's solution renvoie le même résultat.

Questions connexes