Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Lấy 3 bản ghi có giá trị cao nhất trong MySQL

Lấy Top N bản ghi theo giá trị giảm dần với LIMIT

Sử dụng ORDER BY cot DESC LIMIT N để lấy N bản ghi có giá trị lớn nhất.

Tạo bảng và dữ liệu

mysql> create table DemoTable1614 ( 
    StudentName varchar(20), 
    StudentScore int 
); 
Query OK, 0 rows affected (0.78 sec)
mysql> insert into DemoTable1614 values('Adam',65); 
mysql> insert into DemoTable1614 values('Chris',89); 
mysql> insert into DemoTable1614 values('Bob',58); 
mysql> insert into DemoTable1614 values('Sam',98); 
mysql> insert into DemoTable1614 values('Mike',87); 
mysql> insert into DemoTable1614 values('Carol',79);

Truy vấn Top 3 điểm cao nhất

mysql> select * from DemoTable1614 order by StudentScore DESC LIMIT 3;

Kết quả

+-------------+--------------+ 
| StudentName | StudentScore | 
+-------------+--------------+ 
| Sam         | 98           | 
| Chris       | 89           | 
| Mike        | 87           | 
+-------------+--------------+

Mở rộng:

  • LIMIT 3 OFFSET 5: Bỏ qua 5 hàng đầu, lấy 3 hàng tiếp (phân trang)
  • LIMIT 3, 5: Cú pháp cũ, tương tự OFFSET 3 LIMIT 5
  • Kết hợp WHERE để lọc trước khi sắp xếp

Lưu ý hiệu năng: Nếu bảng lớn, hãy tạo index trên cột StudentScore để tránh full table scan + filesort.

CREATE INDEX idx_score ON DemoTable1614(StudentScore DESC);