In MariaDB, puoi usare il LIMIT
clausola per ridurre il numero di righe restituite da una query. Il FOUND_ROWS()
la funzione può essere utilizzata in tali query per restituire il numero di righe che sarebbero state restituite, se il LIMIT
clausola non inclusa.
Questo può essere utile, perché ti consente di ottenere queste informazioni senza dover eseguire nuovamente la query.
Il FOUND_ROWS()
la funzione può anche essere utilizzata per restituire il numero di righe che sono state effettivamente restituite dall'istruzione limited, se è ciò di cui hai bisogno.
Sintassi
La sintassi è questa:
FOUND_ROWS()
Nessun argomento è richiesto o accettato.
Per ottenere il numero di righe restituite da un'istruzione, includi SQL_CALC_FOUND_ROWS
nell'istruzione, quindi eseguire FOUND_ROWS()
in una query separata (dopo aver eseguito la query iniziale).
Esempio
Ecco un esempio per dimostrare come funziona la funzione.
Supponiamo di creare una tabella come questa:
SELECT SQL_CALC_FOUND_ROWS *
FROM Pets
LIMIT 2;
Risultato:
+-------+-----------+---------+---------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | +-------+-----------+---------+---------+------------+ | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 2 | 3 | 3 | Fetch | 2019-08-16 | +-------+-----------+---------+---------+------------+
Sono state restituite solo due righe, come specificato da LIMIT
clausola.
Tuttavia, ora utilizziamo FOUND_ROWS()
per vedere quante righe sarebbero state restituite se non avessimo utilizzato il LIMIT
clausola:
SELECT FOUND_ROWS();
Risultato:
+--------------+ | FOUND_ROWS() | +--------------+ | 8 | +--------------+
Ci dice che sarebbero state restituite otto righe se non avessimo utilizzato il LIMIT
clausola.
Possiamo verificarlo eseguendo la query senza LIMIT
clausola:
SELECT *
FROM Pets;
Risultato:
+-------+-----------+---------+---------+------------+ | 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 | +-------+-----------+---------+---------+------------+
Ho anche rimosso SQL_CALC_FOUND_ROWS
dalla dichiarazione, poiché questa volta non ne avevamo bisogno.
Omissione di SQL_CALC_FOUND_ROWS
Opzione
Se ometti SQL_CALC_FOUND_ROWS
opzione, il FOUND_ROWS()
la funzione restituisce il effettivo numero di righe restituite. In altre parole, restituisce il numero di righe restituite dopo il LIMIT
è stata applicata la clausola.
Ecco lo stesso esempio senza SQL_CALC_FOUND_ROWS
opzione:
SELECT *
FROM Pets
LIMIT 2;
Risultato:
+-------+-----------+---------+---------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | +-------+-----------+---------+---------+------------+ | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 2 | 3 | 3 | Fetch | 2019-08-16 | +-------+-----------+---------+---------+------------+
Ora esegui FOUND_ROWS()
:
SELECT FOUND_ROWS();
Risultato:
+--------------+ | FOUND_ROWS() | +--------------+ | 2 | +--------------+
Questa volta FOUND_ROWS()
restituito 2
invece di 8
.
Query senza LIMIT
Clausola
Lo stesso concetto può essere applicato alle query senza un LIMIT
clausola.
Esempio:
SELECT *
FROM Pets;
Risultato:
+-------+-----------+---------+---------+------------+ | 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 | +-------+-----------+---------+---------+------------+
Ora esegui FOUND_ROWS()
:
SELECT FOUND_ROWS();
Risultato:
+--------------+ | FOUND_ROWS() | +--------------+ | 8 | +--------------+
Altre dichiarazioni
Il FOUND_ROWS()
la funzione può essere utilizzata anche su altre istruzioni, come SHOW
, DESCRIBE
e HELP
.