MariaDB
 sql >> Database >  >> RDS >> MariaDB

Spiegazione di MariaDB FOUND_ROWS()

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 .