การใช้ SQL_CALC_FOUND_ROWS และ FOUND_ROWS() เพื่อนับแถวทั้งหมด
เมื่อใช้ LIMIT ในคำสั่ง SELECT MySQL จะคืนแถวจำกัดจำนวน แต่เราสามารถทราบจำนวนแถวทั้งหมดที่ตรงเงื่อนไขได้โดยใช้ SQL_CALC_FOUND_ROWS และฟังก์ชัน FOUND_ROWS()
ไวยากรณ์
SELECT SQL_CALC_FOUND_ROWS column_name FROM table_name WHERE condition LIMIT n;
ตัวอย่าง: ค้นหาตารางที่ขึ้นต้นด้วย 'DemoTable29' จำกัด 4 แถว
mysql> SELECT SQL_CALC_FOUND_ROWS TABLE_NAME
FROM `information_schema`.tables
WHERE TABLE_NAME LIKE "DemoTable29%" LIMIT 4;
ผลลัพธ์ (แสดง 4 แถว):
+--------------+
| TABLE_NAME |
+--------------+
| demotable29 |
| demotable290 |
| demotable291 |
| demotable292 |
+--------------+
4 rows in set (0.01 sec)
คำสั่งตรวจสอบจำนวนแถวทั้งหมดของคำสั่งก่อนหน้า
mysql> SELECT FOUND_ROWS();
ผลลัพธ์:
+--------------+
| found_rows() |
+--------------+
| 10 |
+--------------+
1 row in set (0.00 sec)
คำอธิบาย
SQL_CALC_FOUND_ROWS: บอก MySQL ให้นับแถวทั้งหมดที่ตรงเงื่อนไข แม้จะมี LIMITFOUND_ROWS(): คืนคาจำนวนแถวทั้งหมดจากคำสั่ง SELECT ล่าสุดที่ใช้ SQL_CALC_FOUND_ROWS- ในตัวอย่าง มีตารางตรงเงื่อนไข 10 ตาราง แต่ LIMIT 4 ทำให้เห็นแค่ 4 แถว
- มีประโยชน์สำหรับการทำ Pagination (แบ่งหน้า)