Đăng nhập

Bài 11. LIMIT – Giới hạn số dòng kết quả

Trong nhiều trường hợp, khi truy vấn dữ liệu từ một bảng, chúng ta không muốn lấy toàn bộ kết quả vì số lượng bản ghi có thể rất lớn. Đó là lúc câu lệnh LIMIT phát huy tác dụng. Câu lệnh này cho phép bạn chỉ lấy ra một số lượng dòng nhất định – rất hữu ích khi cần hiển thị dữ liệu từng trang (pagination), hoặc đơn giản là chỉ cần xem một phần đầu của kết quả.

Trong bài học này, chúng ta sẽ tìm hiểu cách sử dụng LIMIT trong câu truy vấn SELECT, kết hợp với OFFSET để bỏ qua một số dòng đầu tiên.


Cấu trúc câu lệnh LIMIT

SELECT * FROM ten_bang
LIMIT so_dong;

Ví dụ:

SELECT * FROM students
LIMIT 5;

Lệnh trên sẽ lấy 5 dòng đầu tiên trong bảng students.


Kết hợp LIMIT với OFFSET

OFFSET dùng để bỏ qua một số dòng đầu tiên trong kết quả truy vấn. Khi kết hợp với LIMIT, ta có thể dễ dàng phân trang dữ liệu.

Cú pháp:

SELECT * FROM ten_bang
LIMIT so_dong OFFSET vi_tri_bat_dau;

Hoặc (được nhiều hệ quản trị cơ sở dữ liệu hỗ trợ):

SELECT * FROM ten_bang
LIMIT vi_tri_bat_dau, so_dong;

Cả hai câu sau đều cho kết quả giống nhau – lấy 5 dòng bắt đầu từ dòng thứ 11 (OFFSET là 10 vì tính từ 0):

SELECT * FROM students
LIMIT 5 OFFSET 10;

-- Hoặc
SELECT * FROM students
LIMIT 10, 5;

Ứng dụng trong thực tế

Giả sử bạn đang xây một trang web hiển thị danh sách sản phẩm, và bạn muốn mỗi trang chỉ hiển thị 10 sản phẩm:

  • Trang 1: OFFSET 0
  • Trang 2: OFFSET 10
  • Trang 3: OFFSET 20

Ta có thể viết truy vấn động như sau (giả sử người dùng đang ở trang 3):

SELECT * FROM products
ORDER BY created_at DESC
LIMIT 10 OFFSET 20;

Khi nào nên dùng LIMIT?

  • Khi bạn chỉ muốn xem trước vài dòng đầu tiên.
  • Khi kết hợp với ORDER BY để lấy bản ghi mới nhất/cũ nhất.
  • Khi cần phân trang dữ liệu (pagination).
  • Khi thực hiện debug và kiểm tra dữ liệu một cách nhanh chóng.

Gợi ý thực hành

  1. Viết câu lệnh SQL để lấy 3 học sinh đầu tiên có điểm trung bình cao nhất.
  2. Hiển thị sản phẩm thứ 6 đến thứ 10 trong bảng products.
  3. Phân trang bảng orders mỗi trang hiển thị 7 đơn hàng – viết câu lệnh tương ứng cho trang 1, 2, 3.

Kết luận

LIMIT là một công cụ đơn giản nhưng rất hữu ích để kiểm soát khối lượng dữ liệu trả về. Kết hợp với ORDER BYOFFSET, bạn có thể dễ dàng xây dựng các chức năng hiển thị dữ liệu theo trang – một tính năng không thể thiếu trong hầu hết các ứng dụng thực tế.

Trong bài tiếp theo, chúng ta sẽ học cách thêm dữ liệu mới vào bảng bằng lệnh INSERT INTO – bước đầu tiên để “điền dữ liệu” vào cơ sở dữ liệu.

Thảo luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Đăng ký nhận tin mới

Nhận bài học, tài nguyên và cơ hội việc làm qua email hàng tuần.

Chúng tôi cam kết không spam. Bạn có thể hủy bất cứ lúc nào.