MySQL
Limite e offset
Ricerca…
Sintassi
- SELEZIONA colonna_1 [, colonna_2]
FROM table_1
ORDINA PER order_column
LIMIT row_count [OFFSET row_offset] - SELEZIONA colonna_1 [, colonna_2]
FROM table_1
ORDINA PER order_column
LIMIT [row_offset,] row_count
Osservazioni
"Limite" potrebbe significare "Numero massimo di righe in una tabella".
"Offset" significa scelta dal numero di row
(da non confondere con il valore della chiave primaria o qualsiasi valore dei dati del campo)
Rapporto limite e offset
Considerando la seguente tabella users
:
id | nome utente |
---|---|
1 | Utente1 |
2 | Utente2 |
3 | user3 |
4 | Utente4 |
5 | User5 |
Per limitare il numero di righe nel set di risultati di una query SELECT
, la clausola LIMIT
può essere utilizzata insieme a uno o due numeri interi positivi come argomenti (incluso lo zero).
Clausola LIMIT
con un argomento
Quando viene utilizzato un argomento, il set di risultati sarà limitato al numero specificato nel seguente modo:
SELECT * FROM users ORDER BY id ASC LIMIT 2
id | nome utente |
---|---|
1 | Utente1 |
2 | Utente2 |
Se il valore dell'argomento è 0
, il set di risultati sarà vuoto.
Si noti inoltre che la clausola ORDER BY
può essere importante per specificare le prime righe del set di risultati che verrà presentato (quando si ordina da un'altra colonna).
Clausola LIMIT
con due argomenti
Quando vengono utilizzati due argomenti in una clausola LIMIT
:
- il primo argomento rappresenta la riga da cui verranno presentate le righe del set di risultati; questo numero viene spesso indicato come offset , poiché rappresenta la riga precedente alla riga iniziale del set di risultati vincolati. Ciò consente all'argomento di ricevere
0
come valore e quindi di prendere in considerazione la prima riga del set di risultati non vincolato. - il secondo argomento specifica il numero massimo di righe da restituire nel set di risultati (in modo simile all'esempio di un argomento).
Pertanto la query:
SELECT * FROM users ORDER BY id ASC LIMIT 2, 3
Presenta il seguente set di risultati:
id | nome utente |
---|---|
3 | user3 |
4 | Utente4 |
5 | User5 |
Si noti che quando l'argomento di offset è 0
, il set di risultati sarà equivalente a una clausola LIMIT
un argomento. Ciò significa che le seguenti 2 query:
SELECT * FROM users ORDER BY id ASC LIMIT 0, 2
SELECT * FROM users ORDER BY id ASC LIMIT 2
Produce lo stesso set di risultati:
id | nome utente |
---|---|
1 | Utente1 |
2 | Utente2 |
OFFSET
chiave OFFSET
: sintassi alternativa
Una sintassi alternativa per la clausola LIMIT
con due argomenti consiste nell'utilizzo della parola chiave OFFSET
dopo il primo argomento nel seguente modo:
SELECT * FROM users ORDER BY id ASC LIMIT 2 OFFSET 3
Questa query restituirebbe il seguente set di risultati:
id | nome utente |
---|---|
3 | user3 |
4 | Utente4 |
Si noti che in questa sintassi alternativa gli argomenti hanno le loro posizioni commutate:
il primo argomento rappresenta il numero di righe da restituire nel set di risultati;
il secondo argomento rappresenta l'offset.