Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak znaleźć n-tą pozycję w MySQL?

Często trzeba znaleźć n-tą pozycję w MySQL. Np. znajdź 3 miejsce w klasie uczniów. Uczniowie uszeregowani według punktów. Aby znaleźć n-tą pozycję w MySQL, najpierw uszeregujemy rekordy. Następnie filtrujemy n-tą pozycję w MySQL. Oto zapytanie, którego możesz użyć. Wystarczy zastąpić nazwę tabeli scores i nazwy kolumn id, wynik.

Znajdź n-tą pozycję w MySQL na podstawie rosnącej wartości

Przykład:

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

Tutaj znajdujemy rekord z rankingiem 3 . Poniższe zapytanie klasyfikuje rekordy na podstawie rosnącego wyniku. Następnie filtruje rekord z 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;

(SELECT @curRank := 0)

część umożliwia inicjalizację zmiennej bez konieczności oddzielnego polecenia SET.

Result:
+----+------+------+
| id | score| rank |
+----+------+------+
| 5  |   20 |    3 |
+----+------+------+
1 row in set (0.0 sec)

Znajdź n-tą pozycję w MySQL na podstawie malejącej wartości

Jeśli chcesz znaleźć n-tą pozycję w MySQL na podstawie malejącej kolejności wyników, po prostu dodaj słowo kluczowe DESC w zapytaniu. Tutaj znajdujemy rekord z 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;

Wynik:

+----+------+------+
| id | score| rank |
+----+------+------+
| 3  |   30 |    3 |
+----+------+------+
1 row in set (0.0 sec)

Możesz zastosować powyższe metody, aby uzyskać n-tą pozycję dla dowolnego rodzaju miernika, takiego jak wynagrodzenie, liczba pracowników itp.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Alternatywa MySQL dla T-SQL'a WITH TIES

  2. Wybór pływaka w MySQL

  3. Różne sposoby przeglądania tabel w MySQL Server

  4. phpMyAdmin na MySQL 8.0

  5. Różne sposoby wypełniania użytkowników MySQL