Molte volte è necessario calcolare il rango in MySQL. Puoi ordinare per numero o testo ma non puoi calcolare facilmente il rango in MySQL. Ecco una query che puoi utilizzare. Basta sostituire il nome della tabella punteggi e nomi di colonna id, punteggio.
Calcola il rango in MySQL in base al valore crescente
Esempio:
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 | +----+------+
Usiamo una variabile di ranking, come la seguente:
SELECT id,score, @curRank := @curRank + 1 AS rank FROM scores p, (SELECT @curRank := 0) r ORDER BY score;
Il
(SELECT @curRank := 0)
parte consente l'inizializzazione della variabile senza richiedere un comando SET separato.
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)
Calcola il rango in MySQL in base al valore decrescente
Se vuoi calcolare il ranking in MySQL in base all'ordine decrescente dei punteggi, aggiungi semplicemente la parola chiave DESC nella query.
SELECT id,score, @curRank := @curRank + 1 AS rank FROM scores p, (SELECT @curRank := 0) r ORDER BY score DESC;
Risultato: