I MariaDB kan du bruge LIMIT
klausul for at reducere antallet af rækker, der returneres af en forespørgsel. FOUND_ROWS()
funktion kan bruges i sådanne forespørgsler til at returnere antallet af rækker, der ville være blevet returneret, hvis LIMIT
klausul ikke medtaget.
Dette kan være praktisk, fordi det giver dig mulighed for at få disse oplysninger uden at skulle køre forespørgslen igen.
FOUND_ROWS()
Funktionen kan også bruges til at returnere antallet af rækker, der faktisk blev returneret af den begrænsede sætning, hvis det er det, du har brug for.
Syntaks
Syntaksen ser sådan ud:
FOUND_ROWS()
Ingen argumenter er påkrævet eller accepteret.
For at få antallet af rækker returneret af en sætning, skal du inkludere SQL_CALC_FOUND_ROWS
i sætningen, og kør derefter FOUND_ROWS()
i en separat forespørgsel (når du har kørt den indledende forespørgsel).
Eksempel
Her er et eksempel for at demonstrere, hvordan funktionen fungerer.
Antag, at vi opretter en tabel som denne:
SELECT SQL_CALC_FOUND_ROWS *
FROM Pets
LIMIT 2;
Resultat:
+-------+-----------+---------+---------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | +-------+-----------+---------+---------+------------+ | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 2 | 3 | 3 | Fetch | 2019-08-16 | +-------+-----------+---------+---------+------------+
Kun to rækker blev returneret, som angivet af LIMIT
klausul.
Men lad os nu bruge FOUND_ROWS()
for at se, hvor mange rækker der ville være blevet returneret, hvis vi ikke havde brugt LIMIT
klausul:
SELECT FOUND_ROWS();
Resultat:
+--------------+ | FOUND_ROWS() | +--------------+ | 8 | +--------------+
Det fortæller os, at otte rækker ville være blevet returneret, hvis vi ikke havde brugt LIMIT
klausul.
Vi kan bekræfte dette ved at køre forespørgslen uden LIMIT
klausul:
SELECT *
FROM Pets;
Resultat:
+-------+-----------+---------+---------+------------+ | 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 | +-------+-----------+---------+---------+------------+
Jeg fjernede også SQL_CALC_FOUND_ROWS
fra redegørelsen, da vi ikke havde brug for det denne gang.
Udladelse af SQL_CALC_FOUND_ROWS
Mulighed
Hvis du udelader SQL_CALC_FOUND_ROWS
mulighed, FOUND_ROWS()
funktion returnerer den faktiske antal returnerede rækker. Med andre ord returnerer det antallet af rækker, der returneres efter LIMIT
klausul er blevet anvendt.
Her er det samme eksempel uden SQL_CALC_FOUND_ROWS
mulighed:
SELECT *
FROM Pets
LIMIT 2;
Resultat:
+-------+-----------+---------+---------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | +-------+-----------+---------+---------+------------+ | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 2 | 3 | 3 | Fetch | 2019-08-16 | +-------+-----------+---------+---------+------------+
Kør nu FOUND_ROWS()
:
SELECT FOUND_ROWS();
Resultat:
+--------------+ | FOUND_ROWS() | +--------------+ | 2 | +--------------+
Denne gang FOUND_ROWS()
returnerede 2
i stedet for 8
.
Forespørgsler uden en LIMIT
Klausul
Det samme koncept kan anvendes på forespørgsler uden en LIMIT
klausul.
Eksempel:
SELECT *
FROM Pets;
Resultat:
+-------+-----------+---------+---------+------------+ | 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 | +-------+-----------+---------+---------+------------+
Kør nu FOUND_ROWS()
:
SELECT FOUND_ROWS();
Resultat:
+--------------+ | FOUND_ROWS() | +--------------+ | 8 | +--------------+
Andre erklæringer
FOUND_ROWS()
funktion kan også bruges på nogle andre udsagn, såsom SHOW
, DESCRIBE
og HELP
.