В MariaDB можете да използвате LIMIT клауза за намаляване на броя на редовете, върнати от заявка. FOUND_ROWS() функцията може да се използва в такива заявки за връщане на броя на редовете, които биха били върнати, ако LIMIT клауза не е включена.
Това може да е удобно, защото ви позволява да получите тази информация, без да се налага да изпълнявате заявката отново.
FOUND_ROWS() функцията може да се използва и за връщане на броя на редовете, които действително са върнати от ограничената инструкция, ако това е, от което се нуждаете.
Синтаксис
Синтаксисът е така:
FOUND_ROWS() Не се изискват или приемат аргументи.
За да получите броя на редовете, върнати от израз, включете SQL_CALC_FOUND_ROWS в изявлението и след това изпълнете FOUND_ROWS() в отделна заявка (след като изпълните първоначалната заявка).
Пример
Ето пример, за да демонстрирате как работи функцията.
Да предположим, че създаваме таблица като тази:
SELECT SQL_CALC_FOUND_ROWS *
FROM Pets
LIMIT 2; Резултат:
+-------+-----------+---------+---------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | +-------+-----------+---------+---------+------------+ | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 2 | 3 | 3 | Fetch | 2019-08-16 | +-------+-----------+---------+---------+------------+
Бяха върнати само два реда, както е посочено от LIMIT клауза.
Нека обаче сега да използваме FOUND_ROWS() за да видим колко реда биха били върнати, ако не бяхме използвали LIMIT клауза:
SELECT FOUND_ROWS(); Резултат:
+--------------+ | FOUND_ROWS() | +--------------+ | 8 | +--------------+
Това ни казва, че осем реда биха били върнати, ако не бяхме използвали LIMIT клауза.
Можем да проверим това, като изпълним заявката без LIMIT клауза:
SELECT *
FROM Pets; Резултат:
+-------+-----------+---------+---------+------------+ | 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 | +-------+-----------+---------+---------+------------+
Също така премахнах SQL_CALC_FOUND_ROWS от изявлението, тъй като този път не ни трябваше.
Пропускане на SQL_CALC_FOUND_ROWS Опция
Ако пропуснете SQL_CALC_FOUND_ROWS опцията, FOUND_ROWS() функцията връща действителния брой върнати редове. С други думи, връща броя на редовете, върнати след LIMIT клаузата е приложена.
Ето същия пример без SQL_CALC_FOUND_ROWS опция:
SELECT *
FROM Pets
LIMIT 2; Резултат:
+-------+-----------+---------+---------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | +-------+-----------+---------+---------+------------+ | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 2 | 3 | 3 | Fetch | 2019-08-16 | +-------+-----------+---------+---------+------------+
Сега стартирайте FOUND_ROWS() :
SELECT FOUND_ROWS(); Резултат:
+--------------+ | FOUND_ROWS() | +--------------+ | 2 | +--------------+
Този път FOUND_ROWS() върна 2 вместо 8 .
Заявки без LIMIT Клауза
Същата концепция може да се приложи към заявки без LIMIT клауза.
Пример:
SELECT *
FROM Pets; Резултат:
+-------+-----------+---------+---------+------------+ | 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 | +-------+-----------+---------+---------+------------+
Сега стартирайте FOUND_ROWS() :
SELECT FOUND_ROWS(); Резултат:
+--------------+ | FOUND_ROWS() | +--------------+ | 8 | +--------------+
Други изявления
FOUND_ROWS() функцията може да се използва и за някои други изрази, като SHOW , DESCRIBE и HELP .