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

Lấy 20 bản ghi cuối và sắp xếp tăng dần trong MySQL

Lấy N bản ghi cuối cùng nhưng hiển thị theo thứ tự tăng dần

Kỹ thuật: Subquery lấy N bản ghi mới nhất (ORDER BY DESC LIMIT N), rồi query cha sắp xếp lại ASC.

Cú pháp

SELECT * FROM (
    SELECT * FROM tenBang ORDER BY cotSapXep DESC LIMIT 20
) AS bangTam
ORDER BY bangTam.cotSapXep ASC;

Ví dụ minh họa

Bảng ProductInformation 23 sản phẩm (ID 101-123). Lấy 20 sản phẩm cuối (ID lớn nhất) nhưng hiển thị ID tăng dần:

SELECT * FROM (
    SELECT * FROM ProductInformation ORDER BY ProductId DESC LIMIT 20
) AS t1
ORDER BY t1.ProductId ASC;

Kết quả (20 dòng, ID 104 → 123)

+-----------+-------------+--------------+
| ProductId | ProductName | ProductPrice |
+-----------+-------------+--------------+
|       104 | Product-4   |          100 |
|       105 | Product-5   |         1500 |
...
|       123 | Product-23  |        10000 |
+-----------+-------------+--------------+

Muốn kết quả giảm dần?

Chỉ cần đổi ORDER BY t1.ProductId DESC ở query ngoài.

Ứng dụng thực tế

  • Phân trang (pagination) hiển thị trang cuối cùng nhưng dữ liệu tăng dần.
  • Log mới nhất nhưng muốn xem theo thứ tự thời gian tự nhiên.
  • Top N mới nhất sắp xếp lại cho báo cáo.

Hiệu năng

Cần index trên cột sắp xếp (ProductId). Subquery LIMIT 20 rất nhanh nhờ index.