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
.