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

ranking wpisów w tabeli mysql

Nie ma sposobu, aby obliczyć kolejność (co nazywasz rangą) czegoś bez uprzedniego posortowania tabeli lub zapisania rangi.

Jeśli jednak Twoja tabela jest prawidłowo zaindeksowana (wskaźnik popularności), posortowanie tego w bazie danych, tak abyś mógł uzyskać swoją pozycję, jest trywialne. Proponuję coś takiego:

Zaznacz wszystko, w tym pozycję

SET @rank := 0;
SELECT t.*, @rank := @rank + 1
FROM table t
ORDER BY t.popularity;

Aby pobrać element o określonym „identyfikatorze”, możesz po prostu użyć podzapytania w następujący sposób:

Wybierz jeden, w tym rangę

SET @rank := 0;
SELECT * FROM (
  SELECT t.*, @rank := @rank + 1
  FROM table t
  ORDER BY t.popularity
) t2
WHERE t2.id = 1;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. normalizowanie znaków akcentowanych w zapytaniach MySQL

  2. php, pdo mysql nie można wstawić z wewnętrznym sprzężeniem

  3. jeśli wiersz1 =wartość 1, zaktualizuj inne wiersze

  4. Pobieranie pola UTC DATETIME z MySQL w Javie, gdy strefa czasowa serwera nie jest UTC

  5. Ceny pokoi hotelowych dla różnych pór roku