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

Sådan beregnes rang i MySQL

Mange gange har du brug for at beregne rang i MySQL. Du kan bestille efter et nummer eller tekst, men kan ikke nemt beregne rang i MySQL. Her er en forespørgsel, du kan bruge. Bare udskift tabelnavnet score og kolonnenavne id, score.

Beregn rang i MySQL baseret på stigende værdi

Eksempel:

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

Vi bruger en rangeringsvariabel, såsom følgende:

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

Den

(SELECT @curRank := 0)

del tillader den variable initialisering uden at kræve en separat SET-kommando.

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)

Beregn rang i MySQL baseret på faldende værdi

Hvis du ønsker at beregne rang i MySQL baseret på faldende rækkefølge af score, skal du blot tilføje søgeordet DESC i forespørgslen.

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

Resultat:

  1. SYS_EXTRACT_UTC() Funktion i Oracle

  2. Hvad er Fortryd og fortryd i Oracle-databasen

  3. Hvad er Database and Relational Database Management System (RDBMS)

  4. Hvordan kan jeg konvertere en SQL Server 2008 DateTimeOffset til en DateTime