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

Jak obliczyć pozycję w MySQL

Często trzeba obliczyć pozycję w MySQL. Możesz uporządkować według liczby lub tekstu, ale nie możesz łatwo obliczyć rangi w MySQL. Oto zapytanie, którego możesz użyć. Wystarczy zastąpić nazwę tabeli scores i nazwy kolumn id, wynik.

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

Używamy zmiennej rankingowej, takiej jak:

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

(SELECT @curRank := 0)

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

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)

Oblicz pozycję w MySQL na podstawie malejącej wartości

Jeśli chcesz obliczyć pozycję w MySQL na podstawie malejącej kolejności wyników, po prostu dodaj słowo kluczowe DESC w zapytaniu.

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

Wynik:

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak usunąć bazę danych w MySQL/MariaDB?

  2. php zawiera błąd nie znajduje ścieżki

  3. Jak naprawić bazy danych i tabele MySQL

  4. MAX() vs GREATEST() w MySQL:jaka jest różnica?

  5. Android JDBC nie działa:ClassNotFoundException na sterowniku