MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

MariaDB FOUND_ROWS() wyjaśnione

W MariaDB możesz użyć LIMIT klauzula, aby zmniejszyć liczbę wierszy zwracanych przez zapytanie. FOUND_ROWS() funkcja może być użyta w takich zapytaniach do zwrócenia liczby wierszy, które zostałyby zwrócone, gdyby LIMIT klauzula nie została uwzględniona.

Może to być przydatne, ponieważ pozwala uzyskać te informacje bez konieczności ponownego uruchamiania zapytania.

FOUND_ROWS() funkcja może być również użyta do zwrócenia liczby wierszy, które zostały faktycznie zwrócone przez instrukcję limited, jeśli tego potrzebujesz.

Składnia

Składnia wygląda tak:

FOUND_ROWS()

Żadne argumenty nie są wymagane ani akceptowane.

Aby uzyskać liczbę wierszy zwracanych przez instrukcję, dołącz SQL_CALC_FOUND_ROWS w instrukcji, a następnie uruchom FOUND_ROWS() w osobnym zapytaniu (po uruchomieniu zapytania początkowego).

Przykład

Oto przykład pokazujący, jak działa funkcja.

Załóżmy, że tworzymy taką tabelę:

SELECT SQL_CALC_FOUND_ROWS * 
FROM Pets 
LIMIT 2;

Wynik:

+-------+-----------+---------+---------+------------+
| PetId | PetTypeId | OwnerId | PetName | DOB        |
+-------+-----------+---------+---------+------------+
|     1 |         2 |       3 | Fluffy  | 2020-11-20 |
|     2 |         3 |       3 | Fetch   | 2019-08-16 |
+-------+-----------+---------+---------+------------+

Zwrócone zostały tylko dwa wiersze, jak określono w LIMIT klauzula.

Użyjmy jednak teraz FOUND_ROWS() aby zobaczyć, ile wierszy zostałoby zwróconych, gdybyśmy nie użyli LIMIT klauzula:

SELECT FOUND_ROWS();

Wynik:

+--------------+
| FOUND_ROWS() |
+--------------+
|            8 |
+--------------+

Mówi nam, że osiem wierszy zostałoby zwróconych, gdybyśmy nie użyli LIMIT klauzula.

Możemy to zweryfikować, uruchamiając zapytanie bez LIMIT klauzula:

SELECT * 
FROM Pets;

Wynik:

+-------+-----------+---------+---------+------------+
| 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       |
+-------+-----------+---------+---------+------------+

Usunąłem również SQL_CALC_FOUND_ROWS z oświadczenia, ponieważ tym razem go nie potrzebowaliśmy.

Pomijam SQL_CALC_FOUND_ROWS Opcja

Jeśli pominiesz SQL_CALC_FOUND_ROWS opcja FOUND_ROWS() funkcja zwraca rzeczywistą liczba zwróconych wierszy. Innymi słowy, zwraca liczbę wierszy zwróconych po LIMIT klauzula została zastosowana.

Oto ten sam przykład bez SQL_CALC_FOUND_ROWS opcja:

SELECT * 
FROM Pets 
LIMIT 2;

Wynik:

+-------+-----------+---------+---------+------------+
| PetId | PetTypeId | OwnerId | PetName | DOB        |
+-------+-----------+---------+---------+------------+
|     1 |         2 |       3 | Fluffy  | 2020-11-20 |
|     2 |         3 |       3 | Fetch   | 2019-08-16 |
+-------+-----------+---------+---------+------------+

Teraz uruchom FOUND_ROWS() :

SELECT FOUND_ROWS();

Wynik:

+--------------+
| FOUND_ROWS() |
+--------------+
|            2 |
+--------------+

Tym razem FOUND_ROWS() zwrócono 2 zamiast 8 .

Zapytania bez LIMIT Klauzula

Ta sama koncepcja może być zastosowana do zapytań bez LIMIT klauzula.

Przykład:

SELECT * 
FROM Pets;

Wynik:

+-------+-----------+---------+---------+------------+
| 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       |
+-------+-----------+---------+---------+------------+

Teraz uruchom FOUND_ROWS() :

SELECT FOUND_ROWS();

Wynik:

+--------------+
| FOUND_ROWS() |
+--------------+
|            8 |
+--------------+

Inne oświadczenia

FOUND_ROWS() funkcja może być również używana w niektórych innych instrukcjach, takich jak SHOW , DESCRIBE i HELP .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MariaDB Z WYJĄTKIEM Operatora wyjaśniono

  2. Jak DAYOFWEEK() działa w MariaDB

  3. MySQL vs MariaDB vs Percona Server:porównanie funkcji bezpieczeństwa

  4. Jak działa funkcja CONCAT_WS() w MariaDB

  5. Jak MariaDB osiąga globalną skalę dzięki Xpand