sql >> Database >  >> RDS >> Mysql

Hoe rang in MySQL te berekenen

Vaak moet je rang in MySQL berekenen. U kunt bestellen op nummer of tekst, maar u kunt de rangorde in MySQL niet eenvoudig berekenen. Hier is een query die u kunt gebruiken. Vervang gewoon de tabelnaam scores en kolomnamen id, score.

Bereken de rangorde in MySQL op basis van toenemende waarde

Voorbeeld:

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

We gebruiken een rangschikkingsvariabele, zoals de volgende:

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

De

(SELECT @curRank := 0)

deel maakt de initialisatie van de variabele mogelijk zonder dat een apart SET-commando nodig is.

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)

Bereken de rangorde in MySQL op basis van afnemende waarde

Als u de rangorde in MySQL wilt berekenen op basis van afnemende volgorde van scores, voegt u gewoon het trefwoord DESC toe aan de zoekopdracht.

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

Resultaat:

  1. SQLite-datum en tijd

  2. Hoe de TO_BASE64()-functie werkt in MySQL

  3. Hoe PHP MySQL-databaseverbinding te testen met behulp van script

  4. Genereer SQL Create-scripts voor bestaande tabellen met Query