MariaDB FOUND_ROWS() 函数使用指南
在 MariaDB 中, FOUND_ROWS()
是一个内置函数,它返回上一个需要计算行数的查询的总行数。
MariaDB FOUND_ROWS()
函数需要和 SQL_CALC_FOUND_ROWS
关键字配合使用,否则将返回上一个查询的行数。
如果您在一个查询中使用了 LIMIT
子句限制了返回的行数,并且您想知道该语句未包含 LIMIT
子句时的总行数,您可以使用 SQL_CALC_FOUND_ROWS
关键字和 FOUND_ROWS()
函数。这避免了运行两次查询。
MariaDB FOUND_ROWS()
语法
这里是 MariaDB FOUND_ROWS()
函数的语法:
FOUND_ROWS()
参数
MariaDB FOUND_ROWS()
函数不需要任何参数。
返回值
MariaDB FOUND_ROWS()
函数返回上一个需要计算行数的查询的总行数。
如果您需要获取一个查询的总行数,您需要在语句中包含 SQL_CALC_FOUND_ROWS
关键字。
MariaDB FOUND_ROWS()
示例
下面的示例使用了来自 Sakila 示例数据库的 film
表。
这个语句使用 LIMIT
子句展示了来自 film
表的 5 行。
SELECT SQL_CALC_FOUND_ROWS film_id, title
FROM film
LIMIT 5;
请注意,上面的语句中包含 SQL_CALC_FOUND_ROWS
关键字。
输出:
+---------+------------------+
| film_id | title |
+---------+------------------+
| 1 | ACADEMY DINOSAUR |
| 2 | ACE GOLDFINGER |
| 3 | ADAPTATION HOLES |
| 4 | AFFAIR PREJUDICE |
| 5 | AFRICAN EGG |
+---------+------------------+
如果您想要知道上面的查询没有使用 LIMIT
子句时返回多少行,请使用 FOUND_ROWS()
函数:
SELECT FOUND_ROWS();
输出:
+--------------+
| FOUND_ROWS() |
+--------------+
| 1000 |
+--------------+
您可以使用 COUNT()
函数来验证它:
SELECT COUNT(*)
FROM film;
输出:
+----------+
| COUNT(*) |
+----------+
| 1000 |
+----------+
如果不使用 SQL_CALC_FOUND_ROWS
关键字, FOUND_ROWS()
返回上一个查询的行数。
SELECT film_id, title
FROM film
LIMIT 5;
请注意,上面的语句中没有 SQL_CALC_FOUND_ROWS
关键字。
输出:
+---------+------------------+
| film_id | title |
+---------+------------------+
| 1 | ACADEMY DINOSAUR |
| 2 | ACE GOLDFINGER |
| 3 | ADAPTATION HOLES |
| 4 | AFFAIR PREJUDICE |
| 5 | AFRICAN EGG |
+---------+------------------+
然后再看一下 FOUND_ROWS()
函数的返回值:
SELECT FOUND_ROWS();
输出:
+--------------+
| FOUND_ROWS() |
+--------------+
| 5 |
+--------------+
现在,FOUND_ROWS()
函数返回 5
,而不是 1000
。
结论
在 MariaDB 中, FOUND_ROWS()
是一个内置函数,它返回上一个需要计算行数的查询的总行数。