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() 是一个内置函数,它返回上一个需要计算行数的查询的总行数。