Trong MariaDB, bạn có thể sử dụng LIMIT
để giảm số hàng được trả về bởi một truy vấn. FOUND_ROWS()
hàm có thể được sử dụng trong các truy vấn như vậy để trả về số hàng lẽ ra đã được trả về, có LIMIT
điều khoản không được bao gồm.
Điều này có thể hữu ích, vì nó cho phép bạn lấy thông tin này mà không cần phải chạy lại truy vấn.
FOUND_ROWS()
cũng có thể được sử dụng để trả về số lượng hàng thực sự được trả về bởi câu lệnh giới hạn, nếu đó là những gì bạn cần.
Cú pháp
Cú pháp như sau:
FOUND_ROWS()
Không có đối số nào được yêu cầu hoặc chấp nhận.
Để nhận số hàng được trả về bởi một câu lệnh, hãy bao gồm SQL_CALC_FOUND_ROWS
trong câu lệnh, rồi chạy FOUND_ROWS()
trong một truy vấn riêng biệt (sau khi bạn đã chạy truy vấn ban đầu).
Ví dụ
Dưới đây là một ví dụ để chứng minh cách hoạt động của hàm.
Giả sử chúng ta tạo một bảng như sau:
SELECT SQL_CALC_FOUND_ROWS *
FROM Pets
LIMIT 2;
Kết quả:
+-------+-----------+---------+---------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | +-------+-----------+---------+---------+------------+ | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 2 | 3 | 3 | Fetch | 2019-08-16 | +-------+-----------+---------+---------+------------+
Chỉ có hai hàng được trả lại, như được chỉ định bởi LIMIT
mệnh đề.
Tuy nhiên, bây giờ hãy sử dụng FOUND_ROWS()
để xem có bao nhiêu hàng sẽ được trả lại nếu chúng tôi không sử dụng LIMIT
mệnh đề:
SELECT FOUND_ROWS();
Kết quả:
+--------------+ | FOUND_ROWS() | +--------------+ | 8 | +--------------+
Nó cho chúng tôi biết rằng tám hàng sẽ được trả lại nếu chúng tôi không sử dụng LIMIT
mệnh đề.
Chúng tôi có thể xác minh điều này bằng cách chạy truy vấn mà không có LIMIT
mệnh đề:
SELECT *
FROM Pets;
Kết quả:
+-------+-----------+---------+---------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | +-------+-----------+---------+---------+------------+ | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 2 | 3 | 3 | Fetch | 2019-08-16 | | 3 | 2 | 2 | Scratch | 2018-10-01 | | 4 | 3 | 3 | Wag | 2020-03-15 | | 5 | 1 | 1 | Tweet | 2020-11-28 | | 6 | 3 | 4 | Fluffy | 2020-09-17 | | 7 | 3 | 2 | Bark | NULL | | 8 | 2 | 4 | Meow | NULL | +-------+-----------+---------+---------+------------+
Tôi cũng đã xóa SQL_CALC_FOUND_ROWS
từ tuyên bố, vì chúng tôi không cần nó vào khoảng thời gian này.
Bỏ qua SQL_CALC_FOUND_ROWS
Tùy chọn
Nếu bạn bỏ qua SQL_CALC_FOUND_ROWS
tùy chọn, FOUND_ROWS()
hàm trả về thực tế số hàng được trả về. Nói cách khác, nó trả về số hàng được trả về sau LIMIT
điều khoản đã được áp dụng.
Đây là ví dụ tương tự không có SQL_CALC_FOUND_ROWS
tùy chọn:
SELECT *
FROM Pets
LIMIT 2;
Kết quả:
+-------+-----------+---------+---------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | +-------+-----------+---------+---------+------------+ | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 2 | 3 | 3 | Fetch | 2019-08-16 | +-------+-----------+---------+---------+------------+
Bây giờ hãy chạy FOUND_ROWS()
:
SELECT FOUND_ROWS();
Kết quả:
+--------------+ | FOUND_ROWS() | +--------------+ | 2 | +--------------+
Lần này FOUND_ROWS()
trả về 2
thay vì 8
.
Truy vấn không có LIMIT
Mệnh đề
Khái niệm tương tự có thể được áp dụng cho các truy vấn không có LIMIT
mệnh đề.
Ví dụ:
SELECT *
FROM Pets;
Kết quả:
+-------+-----------+---------+---------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | +-------+-----------+---------+---------+------------+ | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 2 | 3 | 3 | Fetch | 2019-08-16 | | 3 | 2 | 2 | Scratch | 2018-10-01 | | 4 | 3 | 3 | Wag | 2020-03-15 | | 5 | 1 | 1 | Tweet | 2020-11-28 | | 6 | 3 | 4 | Fluffy | 2020-09-17 | | 7 | 3 | 2 | Bark | NULL | | 8 | 2 | 4 | Meow | NULL | +-------+-----------+---------+---------+------------+
Bây giờ hãy chạy FOUND_ROWS()
:
SELECT FOUND_ROWS();
Kết quả:
+--------------+ | FOUND_ROWS() | +--------------+ | 8 | +--------------+
Tuyên bố khác
FOUND_ROWS()
hàm cũng có thể được sử dụng trên một số câu lệnh khác, chẳng hạn như SHOW
, DESCRIBE
và HELP
.