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 .