Giới thiệu
Để lấy N bản ghi mới nhất (theo ID tự tăng hoặc thời gian), sắp xếp giảm dần (DESC) và dùng LIMIT N.
Ví dụ thực hành
1. Tạo bảng DemoTable820
mysql> CREATE TABLE DemoTable820 (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
CustomerName VARCHAR(100)
);
2. Chèn 6 khách hàng
mysql> INSERT INTO DemoTable820(CustomerName) VALUES
('Chris'),('Robert'),('David'),('Bob'),('Carol'),('Adam');
3. Lấy 5 bản ghi cuối (Id lớn nhất)
mysql> SELECT * FROM DemoTable820 ORDER BY Id DESC LIMIT 5;
4. Kết quả
+----+--------------+
| Id | CustomerName |
+----+--------------+
| 6 | Adam |
| 5 | Carol |
| 4 | Bob |
| 3 | David |
| 2 | Robert |
+----+--------------+
Các biến thể
-- Lấy 5 bản ghi đầu (cũ nhất)
SELECT * FROM DemoTable820 ORDER BY Id ASC LIMIT 5;
-- Phân trang: trang 2, mỗi trang 5 hàng (bỏ 5 hàng đầu)
SELECT * FROM DemoTable820 ORDER BY Id DESC LIMIT 5 OFFSET 5;
-- Hoặc: LIMIT 5, 5 (cú pháp cũ)
-- Lấy 5 bản ghi cuối nhưng hiển thị theo thứ tự cũ->mới
SELECT * FROM (
SELECT * FROM DemoTable820 ORDER BY Id DESC LIMIT 5
) AS t ORDER BY Id ASC;
Lưu ý
ORDER BYbắt buộc khi dùngLIMITđể kết quả xác định.- Index trên cột sắp xếp (
Id) giúpORDER BY ... LIMITcực nhanh (chỉ đọc N hàng). - Tránh
OFFSETlớn (ví dụ trang 10000) → chậm. Dùng keyset pagination:WHERE Id < last_seen_id ORDER BY Id DESC LIMIT 5.