Mệnh đề LIMIT
trong MySQL được sử dụng để giới hạn số lượng hàng được trả về bởi một truy vấn. Nó thường được sử dụng trong các câu lệnh SELECT
, nhưng cũng có thể được áp dụng cho UPDATE
hoặc DELETE
để hạn chế số lượng bản ghi được cập nhật hoặc xóa.
Cú pháp cơ bản của mệnh đề LIMIT
như sau:
SELECT column1, column2, ...
FROM table_name
WHERE condition
LIMIT [offset], number_of_rows;
Cách hoạt động của mệnh đề LIMIT
number_of_rows
: Đây là số lượng hàng mà bạn muốn trả về từ kết quả truy vấn. Ví dụ, nếu bạn muốn lấy 5 hàng đầu tiên, bạn chỉ cần đặt LIMIT 5
.
offset
(tùy chọn): Đây là vị trí hàng đầu tiên từ kết quả truy vấn mà bạn muốn bắt đầu lấy. Nếu bạn muốn bỏ qua một số hàng đầu tiên và chỉ lấy kết quả từ hàng thứ n trở đi, bạn có thể sử dụng offset
. Nếu chỉ định offset
, nó sẽ được tách bằng dấu phẩy.
Ví dụ về LIMIT
trong MySQL:
1. Lấy 5 hàng đầu tiên:
SELECT * FROM customers
LIMIT 5;
Kết quả sẽ chỉ trả về 5 hàng đầu tiên trong bảng customers
.
2. Bỏ qua 10 hàng đầu tiên và lấy 5 hàng tiếp theo:
SELECT * FROM customers LIMIT 10, 5;
Câu lệnh này sẽ bỏ qua 10 hàng đầu tiên và trả về 5 hàng tiếp theo, tức là hàng thứ 11 đến hàng thứ 15 trong kết quả.
3. Sử dụng LIMIT
trong truy vấn phức tạp:
SELECT id, name, email FROM users
WHERE status = 'active'
ORDER BY created_at DESC
LIMIT 10;
Truy vấn này sẽ trả về 10 người dùng có trạng thái “active”, được sắp xếp theo thứ tự ngày tạo mới nhất (giảm dần).
Sử dụng LIMIT
với mệnh đề UPDATE
và DELETE
UPDATE
với LIMIT: Khi bạn sử dụng UPDATE
, bạn có thể giới hạn số lượng bản ghi được cập nhật bằng cách thêm LIMIT
.
UPDATE employees
SET salary = salary * 1.05
WHERE department = 'IT'
LIMIT 5;
Truy vấn này sẽ chỉ cập nhật lương của 5 nhân viên đầu tiên trong phòng IT.
DELETE
với LIMIT: Tương tự, bạn cũng có thể giới hạn số lượng bản ghi bị xóa.
DELETE FROM employees
WHERE department = 'HR'
LIMIT 3;
Câu lệnh này sẽ xóa 3 bản ghi đầu tiên trong phòng HR.
Lưu ý:
- Khi bạn không chỉ định
offset
, MySQL sẽ mặc định bắt đầu từ hàng đầu tiên.
- Mệnh đề
LIMIT
thường được sử dụng trong các tình huống phân trang khi bạn muốn hiển thị dữ liệu theo từng trang (ví dụ: 10 hàng mỗi trang).
Phân trang với LIMIT
và OFFSET
Khi bạn cần phân trang kết quả, mệnh đề LIMIT
rất hữu ích. Cách này thường được kết hợp với các mệnh đề ORDER BY
để đảm bảo kết quả nhất quán.
Ví dụ, bạn có 100 bản ghi và muốn hiển thị 10 bản ghi mỗi trang. Để hiển thị trang thứ 2, bạn sẽ bỏ qua 10 bản ghi đầu tiên và lấy 10 bản ghi tiếp theo:
SELECT * FROM products
ORDER BY product_id
LIMIT 10 OFFSET 10;
Hoặc tương đương:
SELECT * FROM products
ORDER BY product_id
LIMIT 10, 10;
Câu lệnh này sẽ trả về 10 bản ghi bắt đầu từ bản ghi thứ 11 đến thứ 20.
Kết luận
Mệnh đề LIMIT
trong MySQL rất quan trọng khi làm việc với các tập dữ liệu lớn, giúp bạn kiểm soát số lượng hàng được xử lý và hiển thị trong các truy vấn SQL.