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
.