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 .