Vaak moet je de n-de rang in MySQL vinden. Vind bijvoorbeeld de 3e rang in een klas met studenten. Studenten gerangschikt op score. Om de n-de rang in MySQL te vinden, zullen we eerst de records rangschikken. Vervolgens filteren we de n-de rang in MySQL. Hier is een query die u kunt gebruiken. Vervang gewoon de tabelnaam scores en kolomnamen id, score.
Vind de nde positie 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 | +----+------+
Hier vinden we het record met rang 3 . De volgende query rangschikt de records op basis van toenemende score. Vervolgens filtert het het record met rang 3:
SELECT * from ( SELECT id,score, @curRank := @curRank + 1 AS rank FROM scores p, (SELECT @curRank := 0) r ORDER BY score) WHERE rank = 3;
De
(SELECT @curRank := 0)
deel maakt de initialisatie van de variabele mogelijk zonder dat een apart SET-commando nodig is.
Result: +----+------+------+ | id | score| rank | +----+------+------+ | 5 | 20 | 3 | +----+------+------+ 1 row in set (0.0 sec)
Vind de nde rang in MySQL op basis van afnemende waarde
Als u de n-de rang in MySQL wilt vinden op basis van afnemende volgorde van scores, voegt u gewoon het trefwoord DESC toe aan de zoekopdracht. Hier vinden we het record met rang 3.
SELECT * from ( SELECT id,score, @curRank := @curRank + 1 AS rank FROM scores p, (SELECT @curRank := 0) r ORDER BY score DESC) WHERE rank=3;
Resultaat:
+----+------+------+ | id | score| rank | +----+------+------+ | 3 | 30 | 3 | +----+------+------+ 1 row in set (0.0 sec)
U kunt de bovenstaande methoden toepassen om de n-de rang te krijgen voor elke soort statistiek, zoals salaris, aantal werknemers, enz.