I MariaDB kan du använda LIMIT
sats för att minska antalet rader som returneras av en fråga. FOUND_ROWS()
funktion kan användas i sådana frågor för att returnera antalet rader som skulle ha returnerats om LIMIT
klausul inte inkluderats.
Detta kan vara praktiskt eftersom det låter dig få den här informationen utan att behöva köra frågan igen.
FOUND_ROWS()
Funktionen kan också användas för att returnera antalet rader som faktiskt returnerades av den begränsade satsen, om det är vad du behöver.
Syntax
Syntaxen ser ut så här:
FOUND_ROWS()
Inga argument krävs eller accepteras.
För att få antalet rader som returneras av en sats, inkludera SQL_CALC_FOUND_ROWS
i satsen och kör sedan FOUND_ROWS()
i en separat fråga (efter att du har kört den första frågan).
Exempel
Här är ett exempel för att visa hur funktionen fungerar.
Anta att vi skapar en tabell så här:
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 | +-------+-----------+---------+---------+------------+
Endast två rader returnerades, som specificerats av LIMIT
klausul.
Men låt oss nu använda FOUND_ROWS()
för att se hur många rader som skulle ha returnerats om vi inte hade använt LIMIT
klausul:
SELECT FOUND_ROWS();
Resultat:
+--------------+ | FOUND_ROWS() | +--------------+ | 8 | +--------------+
Det säger oss att åtta rader skulle ha returnerats om vi inte hade använt LIMIT
klausul.
Vi kan verifiera detta genom att köra frågan utan 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 | +-------+-----------+---------+---------+------------+
Jag tog också bort SQL_CALC_FOUND_ROWS
från uttalandet, eftersom vi inte behövde det den här gången.
Utesluter SQL_CALC_FOUND_ROWS
Alternativ
Om du utelämnar SQL_CALC_FOUND_ROWS
alternativet, FOUND_ROWS()
funktionen returnerar faktisk antal returnerade rader. Med andra ord, det returnerar antalet rader som returneras efter LIMIT
klausul har tillämpats.
Här är samma exempel utan SQL_CALC_FOUND_ROWS
alternativ:
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 | +--------------+
Den här gången FOUND_ROWS()
returnerade 2
istället för 8
.
Frågor utan en LIMIT
Klausul
Samma koncept kan tillämpas på frågor utan en LIMIT
klausul.
Exempel:
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 | +--------------+
Övriga uttalanden
FOUND_ROWS()
funktion kan också användas på vissa andra satser, såsom SHOW
, DESCRIBE
och HELP
.