Để lấy một đoạn (page) từ giữa kết quả đã sắp xếp, dùng ORDER BY kết hợp LIMIT offset, row_count.
Ví dụ minh họa
Tạo bảng 12 sinh viên:
CREATE TABLE sortedListDemo (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentName VARCHAR(100)
);
INSERT INTO sortedListDemo (StudentName) VALUES
('John'), ('Sam'), ('Adam'), ('James'), ('Jace'), ('Mike'),
('Carol'), ('Bob'), ('Ramit'), ('Chris'), ('Robert'), ('David');
Dữ liệu gốc (theo ID insert):
+----+-------------+ | Id | StudentName | +----+-------------+ | 1 | John | | 2 | Sam | | 3 | Adam | | 4 | James | | 5 | Jace | | 6 | Mike | | 7 | Carol | | 8 | Bob | | 9 | Ramit | | 10 | Chris | | 11 | Robert | | 12 | David | +----+-------------+
Lấy 6 hàng bắt đầu từ hàng thứ 5 (offset 4, 0-based) sau khi sắp xếp theo tên:
SELECT * FROM sortedListDemo ORDER BY StudentName LIMIT 4, 6;
Kết quả (hàng 5-10 theo alphabet):
+----+-------------+ | Id | StudentName | +----+-------------+ | 12 | David | | 5 | Jace | | 4 | James | | 1 | John | | 6 | Mike | | 9 | Ramit | +----+-------------+
Giải thích:
ORDER BY StudentNamesắp xếp A-Z.LIMIT 4, 6: bỏ qua 4 hàng đầu, lấy 6 hàng tiếp theo.- Cú pháp chuẩn SQL:
LIMIT 6 OFFSET 4(MySQL hỗ trợ cả hai).
Ứng dụng: Phân trang (pagination). Trang 1: LIMIT 10 OFFSET 0, trang 2: LIMIT 10 OFFSET 10, v.v.