Khi sử dụng lệnh SELECT trong MySQL để lấy ra danh sách các bản ghi trong bảng thì mặc định kết quả trả về sẽ là toàn bộ các bản ghi trong bảng đó. Điều này thật sự không tốt cho một hệ thống lớn mà trong các bảng có đến hàng trăm, hàng nghìn bản ghi. Lúc đó mà chúng ta sử dụng câu lệnh SELECT thì thật sự hiệu năng cho người dùng sẽ bị giảm và cũng khó khăn cho người đọc tìm kiếm dữ liệu mà mình mong muốn. Đối với website thường giải quyết vấn đề này bằng cách phân trang (thông thường mỗi website sẽ có tầm 5-20 bản ghi/1 trang). Để phân trang được thì chúng ta cần phải tìm hiểu câu lệnh mà có thể lấy ra được hữu hạn số bản ghi trong 1 khoảng cho trước. Đó chính là câu lệnh LIMIT trong MySQL.
1. Giới thiệu chung về lệnh LIMIT trong MySQL
Lệnh LIMIT đi kèm với lệnh SELECT và thông thường nó nằm ở cuối cùng. Trong quá trình phân trang cho website sẽ sử dụng lệnh LIMIT để xác định kết quả cho mỗi trang, điều này thật sự rất là hữu ích vì nó tăng tốc độ và giúp cho người dùng dễ dàng tìm được thông tin hơn.
Cú pháp LIMIT như sau:
1
2
3
4
5
|
SELECT field1, field2, feild3 FROM table_name WHERE ... ORDER BY column_name, order_type LIMIT start, limit |
Trong đó:
- ORDER BY là kiểu sắp xếp kết quả
- Ở LIMIT ta có:
start
: lấy từ record thứstart
limit
: bắt đầu từstart
và lấy tiếplimit
bản ghi.
Ví dụ: Lấy ra 10 tin tức mới nhất trong trang thứ 2 (tức là lấy từ tin tức mới thứ 11 đến tin thứ 20 => start: 11 và limit: 10)
1
2
3
|
SELECT * FROM ARTICLELIMIT 11, 10 |
2. Một vài ví dụ có sử dụng lệnh LIMIT trong MySQL.
1
2
3
|
SELECT * FROM PRODUCTLIMIT 15 |
OR
1
2
3
|
SELECT * FROM PRODUCTLIMIT 0,15 |
Trong trường hợp này có thể không cần đến start vì start luôn khởi tạo mặc định là 0 nên ta không cần đưa start vào mà kết quả vẫn trả lại 15 sản phẩm đầu tiên.
Như vậy để lấy N bản ghi đầu tiên thì ta chỉ cần truyền một tham số là được.
Trường hợp này ta phải kết hợp với lệnh ORDER BY để sắp xếp các sản phẩm có lượt xem giảm dần, sau đó dùng lệnh LIMIT để lấy 20 sinh viên đầu tiên.
1
2
3
4
|
SELECT * FROM PRODUCTORDER BY ViewCount DESC LIMIT 20 |
Hoặc:
1
2
3
4
|
SELECT * FROM PRODUCTORDER BY ViewCount DESC LIMIT 0, 20 |
#3. Lời kết
Học xong bài này các bạn có thể giải quyết bài toán phân trang khi làm website. Mình hi vọng sau bài này các bạn biết sử dụng câu lệnh LIMIT trong MYSQL để có thể thao tác cơ sở dữ liệu theo ý muốn của mình không bị ràng buộc bởi câu lệnh SELECT trong MYSQL.