No MariaDB, você pode usar o
LIMIT
cláusula para reduzir o número de linhas retornadas por uma consulta. O FOUND_ROWS()
pode ser usada em tais consultas para retornar o número de linhas que teriam sido retornadas, se o LIMIT
cláusula não foi incluída. Isso pode ser útil, pois permite obter essas informações sem precisar executar a consulta novamente.
O
FOUND_ROWS()
A função também pode ser usada para retornar o número de linhas que foram realmente retornadas pela instrução limitada, se for o que você precisa. Sintaxe
A sintaxe fica assim:
FOUND_ROWS()
Nenhum argumento é necessário ou aceito.
Para obter o número de linhas retornadas por uma instrução, inclua
SQL_CALC_FOUND_ROWS
na instrução e, em seguida, execute FOUND_ROWS()
em uma consulta separada (depois de executar a consulta inicial). Exemplo
Aqui está um exemplo para demonstrar como a função funciona.
Suponha que criamos uma tabela assim:
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 | +-------+-----------+---------+---------+------------+
Apenas duas linhas foram retornadas, conforme especificado pelo
LIMIT
cláusula. No entanto, agora vamos usar
FOUND_ROWS()
para ver quantas linhas teriam sido retornadas se não tivéssemos usado o LIMIT
cláusula:SELECT FOUND_ROWS();
Resultado:
+--------------+ | FOUND_ROWS() | +--------------+ | 8 | +--------------+
Ele nos diz que oito linhas teriam sido retornadas se não tivéssemos usado o
LIMIT
cláusula. Podemos verificar isso executando a consulta sem o
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 | +-------+-----------+---------+---------+------------+
Eu também removi o
SQL_CALC_FOUND_ROWS
da declaração, pois não precisávamos desta vez. Omitindo o SQL_CALC_FOUND_ROWS
Opção
Se você omitir o
SQL_CALC_FOUND_ROWS
opção, a FOUND_ROWS()
função retorna o valor real número de linhas retornadas. Em outras palavras, ele retorna o número de linhas retornadas após o LIMIT
cláusula foi aplicada. Aqui está o mesmo exemplo sem o
SQL_CALC_FOUND_ROWS
opção: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 | +-------+-----------+---------+---------+------------+
Agora execute
FOUND_ROWS()
:SELECT FOUND_ROWS();
Resultado:
+--------------+ | FOUND_ROWS() | +--------------+ | 2 | +--------------+
Desta vez
FOUND_ROWS()
retornou 2
em vez de 8
. Consultas sem LIMIT
Cláusula
O mesmo conceito pode ser aplicado a consultas sem um
LIMIT
cláusula. Exemplo:
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 | +-------+-----------+---------+---------+------------+
Agora execute
FOUND_ROWS()
:SELECT FOUND_ROWS();
Resultado:
+--------------+ | FOUND_ROWS() | +--------------+ | 8 | +--------------+
Outras declarações
O
FOUND_ROWS()
A função também pode ser usada em algumas outras instruções, como SHOW
, DESCRIBE
e HELP
.