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

หาจำนวนแถวทั้งหมดของคำสั่งก่อนหน้าที่มี LIMIT ด้วย FOUND_ROWS() ใน MySQL

การใช้ 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 ให้นับแถวทั้งหมดที่ตรงเงื่อนไข แม้จะมี LIMIT
  • FOUND_ROWS() : คืนคาจำนวนแถวทั้งหมดจากคำสั่ง SELECT ล่าสุดที่ใช้ SQL_CALC_FOUND_ROWS
  • ในตัวอย่าง มีตารางตรงเงื่อนไข 10 ตาราง แต่ LIMIT 4 ทำให้เห็นแค่ 4 แถว
  • มีประโยชน์สำหรับการทำ Pagination (แบ่งหน้า)