In MariaDB kunt u de LIMIT
. gebruiken om het aantal rijen dat door een query wordt geretourneerd, te verminderen. De FOUND_ROWS()
functie kan in dergelijke zoekopdrachten worden gebruikt om het aantal rijen te retourneren dat zou zijn geretourneerd, als de LIMIT
clausule niet opgenomen.
Dit kan handig zijn, omdat u deze informatie kunt krijgen zonder dat u de query opnieuw hoeft uit te voeren.
De FOUND_ROWS()
functie kan ook worden gebruikt om het aantal rijen terug te geven dat daadwerkelijk is geretourneerd door de beperkte instructie, als dat is wat u nodig heeft.
Syntaxis
De syntaxis gaat als volgt:
FOUND_ROWS()
Er zijn geen argumenten vereist of geaccepteerd.
Om het aantal rijen te krijgen dat door een instructie wordt geretourneerd, neemt u SQL_CALC_FOUND_ROWS
op in de instructie en voer vervolgens FOUND_ROWS()
. uit in een afzonderlijke query (nadat u de eerste query hebt uitgevoerd).
Voorbeeld
Hier is een voorbeeld om te demonstreren hoe de functie werkt.
Stel dat we een tabel als volgt maken:
SELECT SQL_CALC_FOUND_ROWS *
FROM Pets
LIMIT 2;
Resultaat:
+-------+-----------+---------+---------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | +-------+-----------+---------+---------+------------+ | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 2 | 3 | 3 | Fetch | 2019-08-16 | +-------+-----------+---------+---------+------------+
Er zijn slechts twee rijen geretourneerd, zoals gespecificeerd door de LIMIT
clausule.
Laten we nu echter FOUND_ROWS()
. gebruiken om te zien hoeveel rijen zouden zijn geretourneerd als we de LIMIT
niet hadden gebruikt clausule:
SELECT FOUND_ROWS();
Resultaat:
+--------------+ | FOUND_ROWS() | +--------------+ | 8 | +--------------+
Het vertelt ons dat acht rijen zouden zijn geretourneerd als we de LIMIT
. niet hadden gebruikt clausule.
We kunnen dit verifiëren door de query uit te voeren zonder de LIMIT
clausule:
SELECT *
FROM Pets;
Resultaat:
+-------+-----------+---------+---------+------------+ | 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 | +-------+-----------+---------+---------+------------+
Ik heb ook de SQL_CALC_FOUND_ROWS
. verwijderd uit de verklaring, omdat we die deze keer niet nodig hadden.
De SQL_CALC_FOUND_ROWS
weglaten Optie
Als u de SQL_CALC_FOUND_ROWS
. weglaat optie, de FOUND_ROWS()
functie retourneert de werkelijke aantal rijen geretourneerd. Met andere woorden, het retourneert het aantal rijen dat wordt geretourneerd na de LIMIT
clausule is toegepast.
Hier is hetzelfde voorbeeld zonder de SQL_CALC_FOUND_ROWS
optie:
SELECT *
FROM Pets
LIMIT 2;
Resultaat:
+-------+-----------+---------+---------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | +-------+-----------+---------+---------+------------+ | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 2 | 3 | 3 | Fetch | 2019-08-16 | +-------+-----------+---------+---------+------------+
Voer nu FOUND_ROWS()
. uit :
SELECT FOUND_ROWS();
Resultaat:
+--------------+ | FOUND_ROWS() | +--------------+ | 2 | +--------------+
Deze keer FOUND_ROWS()
2
geretourneerd in plaats van 8
.
Query's zonder een LIMIT
Clausule
Hetzelfde concept kan worden toegepast op zoekopdrachten zonder een LIMIT
clausule.
Voorbeeld:
SELECT *
FROM Pets;
Resultaat:
+-------+-----------+---------+---------+------------+ | 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 | +-------+-----------+---------+---------+------------+
Voer nu FOUND_ROWS()
. uit :
SELECT FOUND_ROWS();
Resultaat:
+--------------+ | FOUND_ROWS() | +--------------+ | 8 | +--------------+
Andere verklaringen
De FOUND_ROWS()
functie kan ook worden gebruikt voor sommige andere instructies, zoals SHOW
, DESCRIBE
, en HELP
.