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
.