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