Mysql
 sql >> Database >  >> RDS >> Mysql

Come calcolare il rango in MySQL

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: