Để biết tổng số hàng khớp điều kiện của truy vấn trước đó (trước khi áp dụng LIMIT), MySQL cung cấp hàm FOUND_ROWS() kết hợp với SQL_CALC_FOUND_ROWS.
Ví dụ minh họa
Sử dụng database information_schema để demo với các bảng có tên bắt đầu bằng "DemoTable29":
Truy vấn có SQL_CALC_FOUND_ROWS và LIMIT 4:
mysql> SELECT SQL_CALC_FOUND_ROWS TABLE_NAME FROM `information_schema`.tables WHERE TABLE_NAME LIKE "DemoTable29%" LIMIT 4;
Kết quả (chỉ 4 hàng do LIMIT):
+--------------+ | TABLE_NAME | +--------------+ | demotable29 | | demotable290 | | demotable291 | | demotable292 | +--------------+
Truy vấn lấy tổng số hàng thực tế
mysql> select found_rows();
Kết quả:
+--------------+ | found_rows() | +--------------+ | 10 | +--------------+
Giải thích:
SQL_CALC_FOUND_ROWS: Yêu cầu MySQL tính tổng số hàng khớp điều kiện (bỏ qua LIMIT)LIMIT 4: Chỉ trả về 4 hàng đầu tiênFOUND_ROWS(): Trả về tổng số hàng thực tế (10) của truy vấn trước
Ứng dụng: Phân trang (pagination) - hiển thị trang 1/10 nhưng vẫn biết tổng số trang để vẽ điều hướng phân trang. Lưu ý: Từ MySQL 8.0.17, SQL_CALC_FOUND_ROWS bị deprecated, khuyến nghị dùng COUNT(*) riêng biệt cho hiệu suất tốt hơn.