MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

MariaDB FOUND_ROWS() explicada


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 .