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 .