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);