sql >> Base de Datos >  >> RDS >> MariaDB

Explicación de MariaDB FOUND_ROWS()

En MariaDB, puede usar el LIMIT cláusula para reducir el número de filas devueltas por una consulta. El FOUND_ROWS() La función se puede usar en tales consultas para devolver el número de filas que se habrían devuelto, si el LIMIT cláusula no ha sido incluida.

Esto puede ser útil, porque le permite obtener esta información sin tener que volver a ejecutar la consulta.

El FOUND_ROWS() La función también se puede usar para devolver el número de filas que realmente devolvió la instrucción limitada, si eso es lo que necesita.

Sintaxis

La sintaxis es así:

FOUND_ROWS()

No se requieren ni se aceptan argumentos.

Para obtener el número de filas devueltas por una instrucción, incluya SQL_CALC_FOUND_ROWS en la instrucción y luego ejecute FOUND_ROWS() en una consulta separada (después de haber ejecutado la consulta inicial).

Ejemplo

Aquí hay un ejemplo para demostrar cómo funciona la función.

Supongamos que creamos una tabla como esta:

SELECT SQL_CALC_FOUND_ROWS * 
FROM Pets 
LIMIT 2;

Resultado:

+-------+-----------+---------+---------+------------+
| PetId | PetTypeId | OwnerId | PetName | DOB        |
+-------+-----------+---------+---------+------------+
|     1 |         2 |       3 | Fluffy  | 2020-11-20 |
|     2 |         3 |       3 | Fetch   | 2019-08-16 |
+-------+-----------+---------+---------+------------+

Solo se devolvieron dos filas, según lo especificado por LIMIT cláusula.

Sin embargo, ahora usemos FOUND_ROWS() para ver cuántas filas se habrían devuelto si no hubiéramos usado el LIMIT cláusula:

SELECT FOUND_ROWS();

Resultado:

+--------------+
| FOUND_ROWS() |
+--------------+
|            8 |
+--------------+

Nos dice que se habrían devuelto ocho filas si no hubiéramos usado el LIMIT cláusula.

Podemos verificar esto ejecutando la consulta sin el LIMIT cláusula:

SELECT * 
FROM Pets;

Resultado:

+-------+-----------+---------+---------+------------+
| PetId | PetTypeId | OwnerId | PetName | DOB        |
+-------+-----------+---------+---------+------------+
|     1 |         2 |       3 | Fluffy  | 2020-11-20 |
|     2 |         3 |       3 | Fetch   | 2019-08-16 |
|     3 |         2 |       2 | Scratch | 2018-10-01 |
|     4 |         3 |       3 | Wag     | 2020-03-15 |
|     5 |         1 |       1 | Tweet   | 2020-11-28 |
|     6 |         3 |       4 | Fluffy  | 2020-09-17 |
|     7 |         3 |       2 | Bark    | NULL       |
|     8 |         2 |       4 | Meow    | NULL       |
+-------+-----------+---------+---------+------------+

También eliminé el SQL_CALC_FOUND_ROWS de la declaración, ya que no la necesitábamos esta vez.

Omitir SQL_CALC_FOUND_ROWS Opción

Si omite el SQL_CALC_FOUND_ROWS opción, la FOUND_ROWS() la función devuelve el real número de filas devueltas. En otras palabras, devuelve el número de filas devueltas después del LIMIT se ha aplicado la cláusula.

Aquí está el mismo ejemplo sin SQL_CALC_FOUND_ROWS opción:

SELECT * 
FROM Pets 
LIMIT 2;

Resultado:

+-------+-----------+---------+---------+------------+
| PetId | PetTypeId | OwnerId | PetName | DOB        |
+-------+-----------+---------+---------+------------+
|     1 |         2 |       3 | Fluffy  | 2020-11-20 |
|     2 |         3 |       3 | Fetch   | 2019-08-16 |
+-------+-----------+---------+---------+------------+

Ahora ejecuta FOUND_ROWS() :

SELECT FOUND_ROWS();

Resultado:

+--------------+
| FOUND_ROWS() |
+--------------+
|            2 |
+--------------+

Esta vez FOUND_ROWS() devolvió 2 en lugar de 8 .

Consultas sin LIMIT Cláusula

El mismo concepto se puede aplicar a consultas sin un LIMIT cláusula.

Ejemplo:

SELECT * 
FROM Pets;

Resultado:

+-------+-----------+---------+---------+------------+
| PetId | PetTypeId | OwnerId | PetName | DOB        |
+-------+-----------+---------+---------+------------+
|     1 |         2 |       3 | Fluffy  | 2020-11-20 |
|     2 |         3 |       3 | Fetch   | 2019-08-16 |
|     3 |         2 |       2 | Scratch | 2018-10-01 |
|     4 |         3 |       3 | Wag     | 2020-03-15 |
|     5 |         1 |       1 | Tweet   | 2020-11-28 |
|     6 |         3 |       4 | Fluffy  | 2020-09-17 |
|     7 |         3 |       2 | Bark    | NULL       |
|     8 |         2 |       4 | Meow    | NULL       |
+-------+-----------+---------+---------+------------+

Ahora ejecuta FOUND_ROWS() :

SELECT FOUND_ROWS();

Resultado:

+--------------+
| FOUND_ROWS() |
+--------------+
|            8 |
+--------------+

Otras declaraciones

El FOUND_ROWS() La función también se puede usar en algunas otras declaraciones, como SHOW , DESCRIBE y HELP .