Mysql
 sql >> база данни >  >> RDS >> Mysql

класиране на записи в таблицата на mysql

Няма начин да изчислите реда (това, което наричате ранг) на нещо, без първо да сортирате таблицата или да съхраните ранга.

Ако вашата таблица обаче е правилно индексирана (индекс на популярност), за базата данни е тривиално да сортира това, за да можете да получите своя ранг. Бих препоръчал нещо като следното:

Изберете всички, включително ранг

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

За да извлечете елемент с конкретен "id", тогава можете просто да използвате подзаявка, както следва:

Изберете един, включително ранг

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. Как да инсталирате и конфигурирате phpMyAdmin на CentOS 6

  2. Най-лесният начин да активирате PHP и MySQL на Mac OS 10.6 (Snow Leopard), 10.7 (Lion), 10.8 (Mountain Lion)?

  3. Хибернация оптимистично заключване..как работи?

  4. Codeigniter ActiveRecord:присъединяване обратно

  5. Предотвратете повторно изпращане на формуляр след щракване върху бутона за връщане