ใช้ 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(*) แยกต่างหาก