Mệnh đề
6 được sử dụng trong câu lệnhCode language: SQL [Structured Query Language] [sql]
LIMIT row_count;
8 để hạn chế số hàng trả về. Mệnh đềCode language: SQL [Structured Query Language] [sql]
LIMIT row_count;
6 chấp nhận một hoặc hai đối số. Giá trị của cả hai đối số phải là số không hoặc số nguyên dươngCode language: SQL [Structured Query Language] [sql]
LIMIT row_count;
Sau đây minh họa cú pháp mệnh đề
6 với hai đối sốCode language: SQL [Structured Query Language] [sql]
LIMIT row_count;
Code language: SQL [Structured Query Language] [sql]
SELECT select_list FROM table_name LIMIT [offset,] row_count;
Trong cú pháp này
1 chỉ định phần bù của hàng đầu tiên sẽ trả về.LIMIT 0 , row_count;
1 của hàng đầu tiên là 0, không phải 1LIMIT 0 , row_count;
3 chỉ định số lượng hàng tối đa để trả vềLIMIT 0 , row_count;
Hình dưới đây minh họa mệnh đề
6Code language: SQL [Structured Query Language] [sql]
LIMIT row_count;
Khi bạn sử dụng mệnh đề
6 với một đối số, MySQL sẽ sử dụng đối số này để xác định số hàng tối đa sẽ trả về từ hàng đầu tiên của tập hợp kết quảCode language: SQL [Structured Query Language] [sql]
LIMIT row_count;
Do đó, hai mệnh đề này tương đương
Code language: SQL [Structured Query Language] [sql]
LIMIT row_count;
Và
LIMIT 0 , row_count;
Ngoài cú pháp trên, MySQL cung cấp cú pháp mệnh đề thay thế
6 sau đâyCode language: SQL [Structured Query Language] [sql]
LIMIT row_count;
3Code language: SQL [Structured Query Language] [sql]
LIMIT row_count;
Mệnh đề LIMIT và ORDER BY
Theo mặc định, câu lệnh
7 trả về các hàng theo thứ tự không xác định. Khi bạn thêm mệnh đề
LIMIT 0 , row_count;
6 vào câu lệnh
LIMIT row_count;
Code language: SQL [Structured Query Language] [sql]
7, các hàng được trả về không thể đoán trước
LIMIT 0 , row_count;
Do đó, để đảm bảo mệnh đề
6 trả về kết quả như mong đợi, bạn nên luôn sử dụng nó với mệnh đềCode language: SQL [Structured Query Language] [sql]
LIMIT row_count;
31 như thế nàyCode language: SQL [Structured Query Language] [sql]
LIMIT row_count;
9Code language: SQL [Structured Query Language] [sql]
LIMIT row_count;
Hình dưới đây minh họa thứ tự đánh giá của mệnh đề
6 trong câu lệnhCode language: SQL [Structured Query Language] [sql]
LIMIT row_count;
7
LIMIT 0 , row_count;
Ví dụ về mệnh đề LIMIT của MySQL
Chúng tôi sẽ sử dụng bảng
34 từ cơ sở dữ liệu mẫu để trình diễnCode language: SQL [Structured Query Language] [sql]
LIMIT row_count;
1] Sử dụng MySQL LIMIT để lấy hàng cao nhất hoặc thấp nhất
Tuyên bố này sử dụng mệnh đề
6 để lấy năm khách hàng hàng đầu có tín dụng cao nhấtCode language: SQL [Structured Query Language] [sql]
LIMIT row_count;
4Code language: SQL [Structured Query Language] [sql]
LIMIT row_count;
trong ví dụ này
- Đầu tiên, mệnh đề
36 sắp xếp khách hàng theo tín dụng từ cao đến thấp
Code language: SQL [Structured Query Language] [sql]LIMIT row_count;
- Sau đó, mệnh đề
6 trả về 5 hàng đầu tiên
Code language: SQL [Structured Query Language] [sql]LIMIT row_count;
Tương tự, ví dụ này sử dụng mệnh đề
6 để tìm năm khách hàng có tín dụng thấp nhấtCode language: SQL [Structured Query Language] [sql]
LIMIT row_count;
8Code language: SQL [Structured Query Language] [sql]
LIMIT row_count;
trong ví dụ này
- Đầu tiên, mệnh đề
36 sắp xếp khách hàng theo tín dụng từ thấp đến caoLIMIT row_count;
- Sau đó, mệnh đề
6 trả về 5 hàng đầu tiên
Code language: SQL [Structured Query Language] [sql]LIMIT row_count;
Vì có hơn 5 khách hàng không có tín dụng, kết quả của truy vấn trên có thể dẫn đến kết quả không nhất quán
Để khắc phục sự cố này, bạn cần thêm nhiều cột hơn vào mệnh đề
36 để hạn chế hàng theo thứ tự duy nhấtCode language: SQL [Structured Query Language] [sql]
LIMIT row_count;
2Code language: SQL [Structured Query Language] [sql]
LIMIT row_count;
2] Sử dụng mệnh đề LIMIT của MySQL để phân trang
Khi hiển thị dữ liệu trên màn hình, bạn thường muốn chia các hàng thành các trang, trong đó mỗi trang chứa một số hàng giới hạn như 10 hoặc 20
Để tính số trang, bạn lấy tổng số hàng chia cho số hàng trên một trang. Để tìm nạp các hàng của một trang cụ thể, bạn có thể sử dụng mệnh đề
6Code language: SQL [Structured Query Language] [sql]
LIMIT row_count;
Truy vấn này sử dụng hàm tổng hợp
93 để lấy tổng số hàng từ bảngCode language: SQL [Structured Query Language] [sql]
LIMIT row_count;
34Code language: SQL [Structured Query Language] [sql]
LIMIT row_count;
6Code language: SQL [Structured Query Language] [sql]
LIMIT row_count;
7Code language: SQL [Structured Query Language] [sql]
LIMIT row_count;
Giả sử rằng mỗi trang có 10 hàng; . Trang thứ 13 cuối cùng chỉ chứa hai hàng
Truy vấn này sử dụng mệnh đề
6 để nhận các hàng của trang 1 chứa 10 khách hàng đầu tiên được sắp xếp theo tên khách hàngCode language: SQL [Structured Query Language] [sql]
LIMIT row_count;
0Code language: SQL [Structured Query Language] [sql]
LIMIT row_count;
Truy vấn này sử dụng mệnh đề
6 để lấy các hàng của trang thứ hai bao gồm các hàng từ 11 – 20Code language: SQL [Structured Query Language] [sql]
LIMIT row_count;
1Code language: SQL [Structured Query Language] [sql]
LIMIT row_count;
Trong ví dụ này, mệnh đề
97 trả về 10 hàng cho hàng 11 – 20Code language: SQL [Structured Query Language] [sql]
LIMIT row_count;
3] Sử dụng MySQL LIMIT để nhận giá trị cao nhất hoặc thấp nhất thứ n
Để có được giá trị cao nhất hoặc thấp nhất thứ n, bạn sử dụng mệnh đề
6 sau đâyCode language: SQL [Structured Query Language] [sql]
LIMIT row_count;
2Code language: SQL [Structured Query Language] [sql]
LIMIT row_count;
Mệnh đề
99 trả về hàngCode language: SQL [Structured Query Language] [sql]
LIMIT row_count;
40 bắt đầu từ hàngCode language: SQL [Structured Query Language] [sql]
LIMIT row_count;
41Code language: SQL [Structured Query Language] [sql]
LIMIT row_count;
Ví dụ: phần sau tìm khách hàng có tín dụng cao thứ hai
3Code language: SQL [Structured Query Language] [sql]
LIMIT row_count;
Hãy kiểm tra lại kết quả. Truy vấn này trả về tất cả các khách hàng được sắp xếp theo tín dụng từ cao đến thấp
4Code language: SQL [Structured Query Language] [sql]
LIMIT row_count;
Như bạn có thể thấy rõ ràng từ đầu ra, kết quả đúng như mong đợi
Lưu ý rằng kỹ thuật này hoạt động khi không có hai khách hàng có cùng hạn mức tín dụng. Để có kết quả chính xác hơn, bạn nên sử dụng chức năng cửa sổ
42Code language: SQL [Structured Query Language] [sql]
LIMIT row_count;
Các mệnh đề LIMIT và DISTINCT của MySQL
Nếu bạn sử dụng mệnh đề
6 với mệnh đềCode language: SQL [Structured Query Language] [sql]
LIMIT row_count;
44, MySQL sẽ ngay lập tức ngừng tìm kiếm khi tìm thấy số hàng duy nhất được chỉ định trong mệnh đềCode language: SQL [Structured Query Language] [sql]
LIMIT row_count;
6Code language: SQL [Structured Query Language] [sql]
LIMIT row_count;
Ví dụ sử dụng mệnh đề
6 với mệnh đềCode language: SQL [Structured Query Language] [sql]
LIMIT row_count;
47 để trả về năm trạng thái duy nhất đầu tiên trong bảngCode language: SQL [Structured Query Language] [sql]
LIMIT row_count;
34Code language: SQL [Structured Query Language] [sql]
LIMIT row_count;