Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Nhận tổng số hàng khi sử dụng LIMIT?

May mắn thay kể từ MySQL 4.0.0, bạn có thể sử dụng SQL_CALC_FOUND_ROWS trong truy vấn của bạn, tùy chọn này sẽ yêu cầu MySQL đếm tổng số hàng bỏ qua LIMIT mệnh đề. Bạn vẫn cần thực hiện một truy vấn thứ hai để truy xuất số lượng hàng, nhưng đó là một truy vấn đơn giản và không phức tạp như truy vấn truy xuất dữ liệu của bạn. Cách sử dụng khá đơn giản. Trong truy vấn chính của bạn, bạn cần thêm SQL_CALC_FOUND_ROWS chỉ sau SELECT và trong truy vấn thứ hai, bạn cần sử dụng FOUND_ROWS() hàm để lấy tổng số hàng. Các truy vấn sẽ giống như sau:

SELECT SQL_CALC_FOUND_ROWS name, email FROM users WHERE name LIKE 'a%' LIMIT 10;

SELECT FOUND_ROWS();

Hạn chế duy nhất là bạn phải gọi truy vấn thứ hai ngay sau truy vấn đầu tiên vì SQL_CALC_FOUND_ROWS không lưu số hàng ở bất kỳ đâu. Mặc dù giải pháp này cũng yêu cầu hai truy vấn nhưng nhanh hơn nhiều vì bạn chỉ thực hiện truy vấn chính một lần. Bạn có thể đọc thêm về SQL_CALC_FOUND_ROWS và FOUND_ROWS () trong tài liệu MySQL.

CHỈNH SỬA: Bạn nên lưu ý rằng trong hầu hết các trường hợp, việc chạy truy vấn hai lần thực sự nhanh hơn SQL_CALC_FOUND_ROWS . xem tại đây

CHỈNH SỬA 2019:

Công cụ sửa đổi truy vấn SQL_CALC_FOUND_ROWS và hàm FOUND_ROWS () đi kèm không được dùng nữa kể từ MySQL 8.0.17 và sẽ bị xóa trong phiên bản MySQL trong tương lai.

https://dev.mysql.com /doc/refman/8.0/en/information-functions.html# Chức năng_found-rows

Bạn nên sử dụng COUNT thay vào đó

SELECT * FROM tbl_name WHERE id > 100 LIMIT 10;
SELECT COUNT(*) WHERE id > 100;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. NOW () Ví dụ - MySQL

  2. Sử dụng mysql concat () trong mệnh đề WHERE?

  3. Thêm nhiều cột SAU một cột cụ thể trong MySQL

  4. Cách sử dụng nhiều cơ sở dữ liệu trong Laravel

  5. Quyền truy cập Java JDBC bị từ chối đối với người dùng