Sử dụng LIMIT offset, count hoặc LIMIT count OFFSET offset để phân trang.
Chuẩn bị dữ liệu (11 hàng)
mysql> CREATE TABLE limitoffsetDemo (id INT, FirstName VARCHAR(200)); mysql> INSERT INTO limitoffsetDemo VALUES (1,'John'),(2,'Bob'),(3,'David'),(4,'carol'),(5,'Taylor'), (1,'John'),(7,'Smith'),(8,'John'),(9,'Johnson'),(10,'Jason'),(11,'Bk');
Tất cả dữ liệu:
mysql> SELECT * FROM limitoffsetDemo; +------+-----------+ | id | FirstName | +------+-----------+ | 1 | John | | 2 | Bob | | 3 | David | | 4 | carol | | 5 | Taylor | | 1 | John | | 7 | Smith | | 8 | John | | 9 | Johnson | | 10 | Jason | | 11 | Bk | +------+-----------+
Phân trang: Lấy 4 bản ghi bắt đầu từ vị trí 7 (0-based)
mysql> SELECT * FROM limitoffsetDemo LIMIT 7, 4;
+------+-----------+ | id | FirstName | +------+-----------+ | 8 | John | | 9 | Johnson | | 10 | Jason | | 11 | Bk | +------+-----------+
Giải thích
LIMIT 7, 4: Bỏ qua 7 hàng đầu (OFFSET 7), lấy 4 hàng tiếp theo.- Tương đương:
LIMIT 4 OFFSET 7. - Trang 1 (kích thước 4):
LIMIT 0, 4hoặcLIMIT 4. - Trang 2:
LIMIT 4, 4. - Trang N:
LIMIT (N-1)*page_size, page_size.
Lưu ý hiệu năng: OFFSET lớn sẽ chậm vì MySQL phải đọc và bỏ qua nhiều hàng. Với dữ liệu lớn, hãy dùng "keyset pagination" (WHERE id > last_seen_id ORDER BY id LIMIT page_size).