MariaDB FOUND_ROWS() 函数的基础用法与实例
MariaDB FOUND_ROWS() 函数是一个信息函数,它用于返回最近一次成功的 SELECT 语句找到的行数,即使使用了 LIMIT 子句也不影响。
FOUND_ROWS() 函数是 MariaDB 中的一个信息函数,它用于返回最近一次成功的 SELECT 语句找到的行数,即使使用了 LIMIT 子句也不影响。如果前一个 SELECT 语句使用了 LIMIT 子句,那么必须同时使用 SQL_CALC_FOUND_ROWS 修饰符,才能让 FOUND_ROWS() 函数返回正确的结果。
语法
FOUND_ROWS() 函数的语法如下:
FOUND_ROWS()
参数
FOUND_ROWS() 函数不需要任何参数。
返回值
FOUND_ROWS() 函数返回最近一次成功的 SELECT 语句找到的行数。如果需要获取一个查询的总行数,需要在语句中包含 SQL_CALC_FOUND_ROWS 修饰符。
实例
下面是一些使用 FOUND_ROWS() 函数的实例。
在不使用 LIMIT 子句的情况下获取查询的总行数
假设我们有一个名为 employees 的表,它包含以下数据:
| id | name | department | salary |
|---|---|---|---|
| 1 | Alice | Sales | 5000 |
| 2 | Bob | Marketing | 6000 |
| 3 | Carol | IT | 7000 |
| 4 | David | HR | 8000 |
| 5 | Eve | Finance | 9000 |
我们可以使用 FOUND_ROWS() 函数在不使用 LIMIT 子句的情况下获取查询的总行数,例如:
SELECT SQL_CALC_FOUND_ROWS * FROM employees;
输出:
| id | name | department | salary |
|---|---|---|---|
| 1 | Alice | Sales | 5000 |
| 2 | Bob | Marketing | 6000 |
| 3 | Carol | IT | 7000 |
| 4 | David | HR | 8000 |
| 5 | Eve | Finance | 9000 |
SELECT FOUND_ROWS();
输出:
5说明:
- 这个实例中,我们在
SELECT语句中使用了SQL_CALC_FOUND_ROWS修饰符,然后执行了FOUND_ROWS()函数,返回了查询的总行数,即 5。 - 注意,即使没有使用
LIMIT子句,也需要使用SQL_CALC_FOUND_ROWS修饰符,否则FOUND_ROWS()函数将返回 0。
在使用 LIMIT 子句的情况下获取查询的总行数
我们可以使用 FOUND_ROWS() 函数在使用 LIMIT 子句的情况下获取查询的总行数,例如:
SELECT SQL_CALC_FOUND_ROWS * FROM employees LIMIT 3;
输出:
| id | name | department | salary |
|---|---|---|---|
| 1 | Alice | Sales | 5000 |
| 2 | Bob | Marketing | 6000 |
| 3 | Carol | IT | 7000 |
SELECT FOUND_ROWS();
输出:
5说明:
- 这个实例中,我们在
SELECT语句中使用了SQL_CALC_FOUND_ROWS修饰符和LIMIT子句,然后执行了FOUND_ROWS()函数,返回了查询的总行数,即 5。 - 注意,即使使用了
LIMIT子句,也不影响FOUND_ROWS()函数的返回值,它仍然返回没有使用LIMIT子句时的行数。
在使用 WHERE 子句的情况下获取查询的总行数
我们可以使用 FOUND_ROWS() 函数在使用 WHERE 子句的情况下获取查询的总行数,例如:
SELECT SQL_CALC_FOUND_ROWS * FROM employees WHERE salary > 6000;
输出:
| id | name | department | salary |
|---|---|---|---|
| 3 | Carol | IT | 7000 |
| 4 | David | HR | 8000 |
| 5 | Eve | Finance | 9000 |
SELECT FOUND_ROWS();
输出:
3说明:
- 这个实例中,我们在
SELECT语句中使用了SQL_CALC_FOUND_ROWS修饰符和WHERE子句,然后执行了FOUND_ROWS()函数,返回了查询的总行数,即 3。 - 注意,
FOUND_ROWS()函数返回的是符合WHERE条件的行数,而不是表中的总行数。
相关函数
除了 FOUND_ROWS() 函数外,MariaDB 还提供了一些其他的信息函数,例如:
ROW_COUNT()函数,它用于返回最近一次成功的INSERT,UPDATE,DELETE或REPLACE语句影响的行数。LAST_INSERT_ID()函数,它用于返回最近一次成功的INSERT或REPLACE语句生成的自增主键值。VERSION()函数,它用于返回 MariaDB 服务器的版本信息。
结论
FOUND_ROWS() 函数是一个有用的信息函数,它用于返回最近一次成功的 SELECT 语句找到的行数,即使使用了 LIMIT 子句也不影响。如果前一个 SELECT 语句使用了 LIMIT 子句,那么必须同时使用 SQL_CALC_FOUND_ROWS 修饰符,才能让 FOUND_ROWS() 函数返回正确的结果。它可以与 WHERE 子句一起使用,也可以与其他的信息函数结合使用。