sql >> Databáze >  >> RDS >> MariaDB

MariaDB FOUND_ROWS() Vysvětleno

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 .


  1. Spustit spouštěč při aktualizaci sloupce A nebo ColumnB nebo ColumnC

  2. Jak mohu použít UUID v SQLAlchemy?

  3. Poskytovatel OraOLEDB.Oracle není registrován na místním počítači

  4. PDO mysql:Jak zjistit, zda bylo vložení úspěšné