Muchas veces necesitas calcular el rango en MySQL. Puede ordenar por un número o texto, pero no puede calcular el rango en MySQL fácilmente. Aquí hay una consulta que puede usar. Simplemente reemplace el nombre de la tabla puntuaciones y nombres de columna id, score.
Calcular rango en MySQL basado en valor creciente
Ejemplo:
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 | +----+------+
Usamos una variable de clasificación, como la siguiente:
SELECT id,score, @curRank := @curRank + 1 AS rank FROM scores p, (SELECT @curRank := 0) r ORDER BY score;
El
(SELECT @curRank := 0)
parte permite la inicialización de variables sin necesidad de un comando SET por separado.
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)
Calcular rango en MySQL basado en valor decreciente
Si desea calcular el rango en MySQL según el orden decreciente de puntajes, simplemente agregue la palabra clave DESC en la consulta.
SELECT id,score, @curRank := @curRank + 1 AS rank FROM scores p, (SELECT @curRank := 0) r ORDER BY score DESC;
Resultado: