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

Lấy kết quả từ giữa danh sách đã sắp xếp trong MySQL

Để 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 StudentName sắ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.