Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

xếp hạng các mục trong bảng mysql

Không có cách nào để tính toán thứ tự (cái mà bạn gọi là xếp hạng) của thứ gì đó mà không sắp xếp bảng hoặc lưu trữ thứ hạng trước.

Tuy nhiên, nếu bảng của bạn được lập chỉ mục đúng cách (chỉ mục dựa trên mức độ phổ biến) thì cơ sở dữ liệu sẽ không sắp xếp thứ này để bạn có thể có được thứ hạng của mình. Tôi muốn đề xuất một cái gì đó như sau:

Chọn tất cả, bao gồm cả xếp hạng

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

Để tìm nạp một mục với một "id" cụ thể, bạn có thể chỉ cần sử dụng một truy vấn con như sau:

Chọn một, bao gồm cả xếp hạng

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. MySQL Nhiều số lượng trong một truy vấn với trường hợp

  2. MySQL Chèn vào nhiều bảng? (Chuẩn hóa cơ sở dữ liệu?)

  3. Chúng ta có thể kiểm soát thứ tự biểu thức LINQ với Skip (), Take () và OrderBy ()

  4. MySQL - Bảng 'my_table' không bị khóa bằng Lock Tables

  5. Tự động tăng sau khi xóa trong MySQL