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

Làm thế nào để tìm thứ hạng thứ n trong MySQL?

Đôi khi bạn cần tìm xếp hạng thứ n trong MySQL. Ví dụ:tìm số hạng thứ 3 trong một lớp học sinh. Học sinh xếp loại theo điểm. Để tìm thứ hạng thứ n trong MySQL, trước tiên chúng ta sẽ xếp hạng các bản ghi. Sau đó, chúng tôi lọc xếp hạng thứ n trong MySQL. Đây là một truy vấn bạn có thể sử dụng. Chỉ cần thay thế tên bảng điểm số và tên cột id, điểm số.

Tìm xếp hạng thứ n trong MySQL dựa trên giá trị ngày càng tăng

Ví dụ:

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

Tại đây, chúng tôi tìm thấy kỷ lục có xếp hạng 3 . Truy vấn sau đây xếp hạng các bản ghi dựa trên số điểm ngày càng tăng. Sau đó, nó lọc bản ghi với thứ hạng 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)

phần cho phép khởi tạo biến mà không yêu cầu lệnh SET riêng biệt.

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

Tìm xếp hạng thứ n trong MySQL dựa trên giá trị giảm dần

Nếu bạn muốn tìm thứ hạng thứ n trong MySQL dựa trên thứ tự giảm dần của điểm số, chỉ cần thêm từ khóa DESC trong truy vấn. Ở đây chúng tôi tìm thấy kỷ lục với thứ hạng 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;

Kết quả:

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

Bạn có thể áp dụng các phương pháp trên để có thứ hạng thứ n cho bất kỳ loại chỉ số nào như tiền lương, số lượng nhân viên, v.v.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Phần còn lại trong PostgreSQL, MS SQL Server, MySQL và SQLite

  2. Mysql hoặc / và mức độ ưu tiên?

  3. Khôi phục cơ sở dữ liệu mysql từ các tệp .frm

  4. Xuất Cơ sở dữ liệu MySQL sang Cơ sở dữ liệu SQLite

  5. MySQL:Chọn mục nhập ngẫu nhiên, nhưng có trọng lượng đối với các mục nhập nhất định