Plusieurs fois, vous devez calculer le rang dans MySQL. Vous pouvez commander par un nombre ou un texte, mais vous ne pouvez pas calculer facilement le classement dans MySQL. Voici une requête que vous pouvez utiliser. Remplacez simplement le nom de la table scores et les noms de colonne id, score.
Calculer le classement dans MySQL en fonction de la valeur croissante
Exemple :
CREATE TABLE score (id int, score int); INSERT INTO scores VALUES (1, 35),(2, 10),(3,30),(4,22),(5,20),(6,18),(7,36); Scores: +----+------+ | id | score| +----+------+ | 1 | 35 | | 2 | 10 | | 3 | 30 | | 4 | 22 | | 5 | 20 | | 6 | 18 | | 7 | 36 | +----+------+
Nous utilisons une variable de classement, telle que la suivante :
SELECT id,score, @curRank := @curRank + 1 AS rank FROM scores p, (SELECT @curRank := 0) r ORDER BY score;
Le
(SELECT @curRank := 0)
part permet l'initialisation de la variable sans nécessiter une commande SET séparée.
Result: +----+------+------+ | id | score| rank | +----+------+------+ | 2 | 10 | 1 | | 6 | 18 | 2 | | 5 | 20 | 3 | | 4 | 22 | 4 | | 3 | 30 | 5 | | 1 | 35 | 6 | | 7 | 36 | 7 | +----+------+------+ 7 rows in set (0.02 sec)
Calculer le classement dans MySQL en fonction de la valeur décroissante
Si vous souhaitez calculer le classement dans MySQL en fonction de l'ordre décroissant des scores, ajoutez simplement le mot-clé DESC dans la requête.
SELECT id,score, @curRank := @curRank + 1 AS rank FROM scores p, (SELECT @curRank := 0) r ORDER BY score DESC;
Résultat: