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: