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 .