Muitas vezes você precisa encontrar a enésima posição no MySQL. Por exemplo, encontre a 3ª posição em uma classe de alunos. Alunos classificados por pontuação. Para encontrar a enésima classificação no MySQL, primeiro vamos classificar os registros. Em seguida, filtramos a enésima classificação no MySQL. Aqui está uma consulta que você pode usar. Basta substituir o nome da tabela pontuações e nomes de coluna id, pontuação.
Encontre a enésima classificação no MySQL com base no valor crescente
Exemplo:
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 | +----+------+
Aqui encontramos o recorde com rank 3 . A consulta a seguir classifica os registros com base na pontuação crescente. Em seguida, filtra o registro com classificação 3:
SELECT * from ( SELECT id,score, @curRank := @curRank + 1 AS rank FROM scores p, (SELECT @curRank := 0) r ORDER BY score) WHERE rank = 3;
o
(SELECT @curRank := 0)
part permite a inicialização da variável sem exigir um comando SET separado.
Result: +----+------+------+ | id | score| rank | +----+------+------+ | 5 | 20 | 3 | +----+------+------+ 1 row in set (0.0 sec)
Encontre a enésima classificação no MySQL com base no valor decrescente
Se você quiser encontrar a n-ésima classificação no MySQL com base na ordem decrescente das pontuações, basta adicionar a palavra-chave DESC na consulta. Aqui encontramos o recorde com a classificação 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;
Resultado:
+----+------+------+ | id | score| rank | +----+------+------+ | 3 | 30 | 3 | +----+------+------+ 1 row in set (0.0 sec)
Você pode aplicar os métodos acima para obter a enésima classificação para qualquer tipo de métrica, como salário, contagem de funcionários etc.