MariaDB
 sql >> Base de données >  >> RDS >> MariaDB

MariaDB FOUND_ROWS() expliqué

Dans MariaDB, vous pouvez utiliser le LIMIT clause pour réduire le nombre de lignes renvoyées par une requête. Le FOUND_ROWS() La fonction peut être utilisée dans de telles requêtes pour renvoyer le nombre de lignes qui auraient été renvoyées si le LIMIT clause non incluse.

Cela peut être pratique, car cela vous permet d'obtenir ces informations sans avoir à exécuter à nouveau la requête.

Le FOUND_ROWS() La fonction peut également être utilisée pour renvoyer le nombre de lignes réellement renvoyées par l'instruction limited, si c'est ce dont vous avez besoin.

Syntaxe

La syntaxe ressemble à ceci :

FOUND_ROWS()

Aucun argument n'est requis ou accepté.

Pour obtenir le nombre de lignes renvoyées par une instruction, incluez SQL_CALC_FOUND_ROWS dans l'instruction, puis exécutez FOUND_ROWS() dans une requête distincte (après avoir exécuté la requête initiale).

Exemple

Voici un exemple pour illustrer le fonctionnement de la fonction.

Supposons que nous créons une table comme celle-ci :

SELECT SQL_CALC_FOUND_ROWS * 
FROM Pets 
LIMIT 2;

Résultat :

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

Seules deux lignes ont été renvoyées, comme spécifié par le LIMIT clause.

Cependant, utilisons maintenant FOUND_ROWS() pour voir combien de lignes auraient été renvoyées si nous n'avions pas utilisé le LIMIT clause :

SELECT FOUND_ROWS();

Résultat :

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

Il nous indique que huit lignes auraient été renvoyées si nous n'avions pas utilisé le LIMIT clause.

Nous pouvons le vérifier en exécutant la requête sans le LIMIT clause :

SELECT * 
FROM Pets;

Résultat :

+-------+-----------+---------+---------+------------+
| 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       |
+-------+-----------+---------+---------+------------+

J'ai également supprimé le SQL_CALC_FOUND_ROWS de la déclaration, car nous n'en avions pas besoin cette fois-ci.

Omettre le SQL_CALC_FOUND_ROWS Options

Si vous omettez le SQL_CALC_FOUND_ROWS l'option FOUND_ROWS() la fonction renvoie le réel nombre de lignes renvoyées. En d'autres termes, il renvoie le nombre de lignes renvoyées après le LIMIT clause a été appliquée.

Voici le même exemple sans le SQL_CALC_FOUND_ROWS choix :

SELECT * 
FROM Pets 
LIMIT 2;

Résultat :

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

Maintenant, exécutez FOUND_ROWS() :

SELECT FOUND_ROWS();

Résultat :

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

Cette fois FOUND_ROWS() a renvoyé 2 au lieu de 8 .

Requêtes sans LIMIT Article

Le même concept peut être appliqué aux requêtes sans LIMIT clause.

Exemple :

SELECT * 
FROM Pets;

Résultat :

+-------+-----------+---------+---------+------------+
| 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       |
+-------+-----------+---------+---------+------------+

Maintenant, exécutez FOUND_ROWS() :

SELECT FOUND_ROWS();

Résultat :

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

Autres déclarations

Le FOUND_ROWS() La fonction peut également être utilisée sur d'autres instructions, telles que SHOW , DESCRIBE , et HELP .