MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

MariaDB FOUND_ROWS() erklärt

In MariaDB können Sie das LIMIT verwenden -Klausel, um die Anzahl der von einer Abfrage zurückgegebenen Zeilen zu reduzieren. Die FOUND_ROWS() Die Funktion kann in solchen Abfragen verwendet werden, um die Anzahl der Zeilen zurückzugeben, die zurückgegeben worden wären, wenn LIMIT gewesen wäre Klausel wurde nicht aufgenommen.

Dies kann praktisch sein, da Sie diese Informationen abrufen können, ohne die Abfrage erneut ausführen zu müssen.

Die FOUND_ROWS() -Funktion kann auch verwendet werden, um die Anzahl der Zeilen zurückzugeben, die tatsächlich von der eingeschränkten Anweisung zurückgegeben wurden, wenn Sie dies benötigen.

Syntax

Die Syntax lautet wie folgt:

FOUND_ROWS()

Es sind keine Argumente erforderlich oder akzeptiert.

Um die Anzahl der von einer Anweisung zurückgegebenen Zeilen zu erhalten, fügen Sie SQL_CALC_FOUND_ROWS ein in der Anweisung und führen Sie dann FOUND_ROWS() aus in einer separaten Abfrage (nachdem Sie die erste Abfrage ausgeführt haben).

Beispiel

Hier ist ein Beispiel, um zu demonstrieren, wie die Funktion funktioniert.

Angenommen, wir erstellen eine Tabelle wie diese:

SELECT SQL_CALC_FOUND_ROWS * 
FROM Pets 
LIMIT 2;

Ergebnis:

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

Es wurden nur zwei Zeilen zurückgegeben, wie durch LIMIT angegeben Klausel.

Lassen Sie uns jetzt jedoch FOUND_ROWS() verwenden um zu sehen, wie viele Zeilen zurückgegeben worden wären, wenn wir LIMIT nicht verwendet hätten Klausel:

SELECT FOUND_ROWS();

Ergebnis:

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

Es sagt uns, dass acht Zeilen zurückgegeben worden wären, wenn wir das LIMIT nicht verwendet hätten Klausel.

Wir können dies überprüfen, indem wir die Abfrage ohne LIMIT ausführen Klausel:

SELECT * 
FROM Pets;

Ergebnis:

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

Ich habe auch SQL_CALC_FOUND_ROWS entfernt aus der Anweisung, da wir es diesmal nicht brauchten.

Weglassen der SQL_CALC_FOUND_ROWS Möglichkeit

Wenn Sie SQL_CALC_FOUND_ROWS weglassen Option, die FOUND_ROWS() Funktion gibt das tatsächliche zurück Anzahl der zurückgegebenen Zeilen. Mit anderen Worten, es gibt die Anzahl der Zeilen zurück, die nach dem LIMIT zurückgegeben werden Klausel wurde angewendet.

Hier ist dasselbe Beispiel ohne SQL_CALC_FOUND_ROWS Möglichkeit:

SELECT * 
FROM Pets 
LIMIT 2;

Ergebnis:

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

Führen Sie nun FOUND_ROWS() aus :

SELECT FOUND_ROWS();

Ergebnis:

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

Dieses Mal FOUND_ROWS() gab 2 zurück statt 8 .

Abfragen ohne LIMIT Klausel

Dasselbe Konzept kann auf Abfragen ohne LIMIT angewendet werden Klausel.

Beispiel:

SELECT * 
FROM Pets;

Ergebnis:

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

Führen Sie nun FOUND_ROWS() aus :

SELECT FOUND_ROWS();

Ergebnis:

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

Sonstige Aussagen

Die FOUND_ROWS() Die Funktion kann auch für einige andere Anweisungen verwendet werden, wie z. B. SHOW , DESCRIBE , und HELP .