Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So berechnen Sie den Rang in MySQL

Oft müssen Sie den Rang in MySQL berechnen. Sie können nach einer Zahl oder einem Text sortieren, aber den Rang in MySQL nicht einfach berechnen. Hier ist eine Abfrage, die Sie verwenden können. Ersetzen Sie einfach den Tabellennamen Ergebnisse und Spaltennamen id, score.

Rang in MySQL basierend auf steigendem Wert berechnen

Beispiel:

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

Wir verwenden eine Ranking-Variable wie die folgende:

SELECT    id,score,
          @curRank := @curRank + 1 AS rank
FROM      scores p, (SELECT @curRank := 0) r
ORDER BY  score;

Die

(SELECT @curRank := 0)

part erlaubt die Variableninitialisierung, ohne dass ein separater SET-Befehl erforderlich ist.

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)

Rang in MySQL basierend auf abnehmendem Wert berechnen

Wenn Sie den Rang in MySQL basierend auf der absteigenden Reihenfolge der Punktzahlen berechnen möchten, fügen Sie einfach das Schlüsselwort DESC in die Abfrage ein.

SELECT    id,score,
          @curRank := @curRank + 1 AS rank
FROM      scores p, (SELECT @curRank := 0) r
ORDER BY  score DESC;

Ergebnis: