Để lấy 5 bản ghi mới nhất (theo ID) và sắp xếp chúng theo thứ tự tăng dần, sử dụng truy vấn con (subquery).
Tạo bảng và chèn dữ liệu
mysql> CREATE TABLE DemoTable (Id INT);
mysql> INSERT INTO DemoTable VALUES(100), (115), (200), (140), (124), (198), (156), (178), (156);
Xem toàn bộ dữ liệu (không theo thứ tự)
mysql> SELECT * FROM DemoTable;
+------+ | Id | +------+ | 100 | | 115 | | 200 | | 140 | | 124 | | 198 | | 156 | | 178 | | 156 | +------+
Truy vấn lấy 5 bản ghi cuối và sắp xếp tăng dần
mysql> SELECT * FROM (
-> SELECT * FROM DemoTable ORDER BY Id DESC LIMIT 5
-> ) AS tbl ORDER BY Id;
+------+ | Id | +------+ | 156 | | 156 | | 178 | | 198 | | 200 | +------+
Giải thích logic
- Truy vấn con:
SELECT * FROM DemoTable ORDER BY Id DESC LIMIT 5lấy 5 ID lớn nhất (mới nhất) - Truy vấn cha: Sắp xếp lại 5 bản ghi đó theo
ORDER BY Id(tăng dần) - Kết quả: 5 bản ghi mới nhất hiển thị từ cũ đến mới
Cách viết gọn hơn (MySQL 8.0+)
SELECT * FROM DemoTable ORDER BY Id DESC LIMIT 5 ORDER BY Id;
Hoặc dùng CTE:
WITH Latest5 AS (
SELECT * FROM DemoTable ORDER BY Id DESC LIMIT 5
)
SELECT * FROM Latest5 ORDER BY Id;