MariaDB
 sql >> база данни >  >> RDS >> MariaDB

MariaDB FOUND_ROWS() Обяснено

В 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 .


  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

  2. Задайте езика, използван за функциите за дата и час в MariaDB

  3. Как да спрете или намалите SST операцията на клъстер Galera

  4. Функция SUM() в MariaDB

  5. Сравняване на облачните предложения на Galera Cluster:Трета част Microsoft Azure