V MariaDB můžete použít LIMIT
klauzule ke snížení počtu řádků vrácených dotazem. FOUND_ROWS()
funkci lze v takových dotazech použít k vrácení počtu řádků, které by byly vráceny, kdyby LIMIT
klauzule nebyla zahrnuta.
To může být užitečné, protože vám to umožní získat tyto informace, aniž byste museli znovu spouštět dotaz.
FOUND_ROWS()
funkci lze také použít k vrácení počtu řádků, které byly skutečně vráceny omezeným příkazem, pokud to potřebujete.
Syntaxe
Syntaxe vypadá takto:
FOUND_ROWS()
Nejsou vyžadovány ani přijímány žádné argumenty.
Chcete-li získat počet řádků vrácených příkazem, zahrňte SQL_CALC_FOUND_ROWS
v příkazu a poté spusťte FOUND_ROWS()
v samostatném dotazu (po spuštění úvodního dotazu).
Příklad
Zde je příklad demonstrující, jak funkce funguje.
Předpokládejme, že vytvoříme tabulku takto:
SELECT SQL_CALC_FOUND_ROWS *
FROM Pets
LIMIT 2;
Výsledek:
+-------+-----------+---------+---------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | +-------+-----------+---------+---------+------------+ | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 2 | 3 | 3 | Fetch | 2019-08-16 | +-------+-----------+---------+---------+------------+
Byly vráceny pouze dva řádky, jak je uvedeno v LIMIT
doložka.
Nyní však použijeme FOUND_ROWS()
abychom viděli, kolik řádků by bylo vráceno, kdybychom nepoužili LIMIT
klauzule:
SELECT FOUND_ROWS();
Výsledek:
+--------------+ | FOUND_ROWS() | +--------------+ | 8 | +--------------+
Říká nám, že kdybychom nepoužili LIMIT
, bylo by vráceno osm řádků doložka.
Můžeme to ověřit spuštěním dotazu bez LIMIT
klauzule:
SELECT *
FROM Pets;
Výsledek:
+-------+-----------+---------+---------+------------+ | 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 | +-------+-----------+---------+---------+------------+
Také jsem odstranil SQL_CALC_FOUND_ROWS
z výpisu, protože jsme to tentokrát nepotřebovali.
Vynechání SQL_CALC_FOUND_ROWS
Možnost
Pokud vynecháte SQL_CALC_FOUND_ROWS
možnost, FOUND_ROWS()
funkce vrací skutečné počet vrácených řádků. Jinými slovy, vrátí počet řádků vrácených za LIMIT
byla použita klauzule.
Zde je stejný příklad bez SQL_CALC_FOUND_ROWS
možnost:
SELECT *
FROM Pets
LIMIT 2;
Výsledek:
+-------+-----------+---------+---------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | +-------+-----------+---------+---------+------------+ | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 2 | 3 | 3 | Fetch | 2019-08-16 | +-------+-----------+---------+---------+------------+
Nyní spusťte FOUND_ROWS()
:
SELECT FOUND_ROWS();
Výsledek:
+--------------+ | FOUND_ROWS() | +--------------+ | 2 | +--------------+
Tentokrát FOUND_ROWS()
vrátil 2
místo 8
.
Dotazy bez LIMIT
Ustanovení
Stejný koncept lze použít na dotazy bez LIMIT
doložka.
Příklad:
SELECT *
FROM Pets;
Výsledek:
+-------+-----------+---------+---------+------------+ | 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 | +-------+-----------+---------+---------+------------+
Nyní spusťte FOUND_ROWS()
:
SELECT FOUND_ROWS();
Výsledek:
+--------------+ | FOUND_ROWS() | +--------------+ | 8 | +--------------+
Další prohlášení
FOUND_ROWS()
funkci lze také použít na některé další příkazy, jako je SHOW
, DESCRIBE
a HELP
.