Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

การหาจำนวนแถวทั้งหมดขณะใช้ LIMIT ใน MySQL

ใช้ SQL_CALC_FOUND_ROWS ในคิวรี่ SELECT แล้วตามด้วย SELECT FOUND_ROWS() เพื่อดูจำนวนแถวทั้งหมดโดยไม่ต้องรันคิวรี่อีกครั้ง

ไวยากรณ์

SELECT SQL_CALC_FOUND_ROWS * FROM yourTableName LIMIT 0, yourLastValue;
SELECT FOUND_ROWS();

ตัวอย่างการใช้งาน

สร้างตารางและเพิ่มข้อมูล 6 แถว:

mysql> create table RowsUsingLimit (Id int NOT NULL, Name varchar(10));
mysql> insert into RowsUsingLimit values(10,'Larry'),(9,'Mike'),(15,'Sam'),(20,'Bob'),(1,'Carol'),(18,'David');

รันคิวรี่พร้อม LIMIT 6 (ทั้งหมด 6 แถว):

mysql> select SQL_CALC_FOUND_ROWS * FROM RowsUsingLimit LIMIT 0,6;
+----+-------+
| Id | Name  |
+----+-------+
| 10 | Larry |
|  9 | Mike  |
| 15 | Sam   |
| 20 | Bob   |
|  1 | Carol |
| 18 | David |
+----+-------+

ตรวจสอบจำนวนแถวทั้งหมด:

mysql> SELECT FOUND_ROWS();
+--------------+
| FOUND_ROWS() |
+--------------+
|            6 |
+--------------+

ประโยชน์: ใช้ใน Pagination - รันคิวรี่เดียวได้ทั้งข้อมูลหน้าปัจจุบันและจำนวนทั้งหมด

หมายเหตุ: MySQL 8.0.17+ เริ่ม Deprecate SQL_CALC_FOUND_ROWS แนะนำให้รัน COUNT(*) แยกต่างหาก