Riepilogo: in questo tutorial, imparerai come usare la clausola MySQLLIMIT
per vincolare il numero di righe restituite da una query.
Introduzione alla clausola LIMITE MySQL
La clausolaLIMIT
viene utilizzata nell’istruzioneSELECT
per limitare il numero di righe da restituire. La clausolaLIMIT
accetta uno o due argomenti. I valori di entrambi gli argomenti devono essere zero o numeri interi positivi.,
La seguente illustra il LIMIT
sintassi della clausola con due argomenti:
Code language: SQL (Structured Query Language) (sql)
In questa sintassi:
-
offset
specifica l’offset della prima riga di ritorno. Iloffset
della prima riga è 0, non 1. -
row_count
specifica il numero massimo di righe da restituire.,
La figura seguente illustra il LIMIT
clausola:
Quando si utilizza il tag LIMIT
clausola di un argomento, MySQL utilizzare questo argomento per determinare il numero massimo di righe da restituire a partire dalla prima riga del set di risultati.,
Pertanto, queste due clausole sono equivalenti:
Code language: SQL (Structured Query Language) (sql)
E
Oltre alla sintassi precedente, MySQL fornisce la seguente clausola alternativaLIMIT
per la compatibilità con PostgreSQL.
Code language: SQL (Structured Query Language) (sql)
Clausole LIMIT e ORDER BY
L’istruzione SELECT
senza una clausola ORDER BY
restituisce le righe in un ordine non specificato. Significa che le righe possono essere in qualsiasi ordine., Quando si applica la clausolaLIMIT
a questo set di risultati non ordinati, non si saprà quali righe restituirà la query.
Ad esempio, potresti voler ottenere dalla quinta alla decima riga, ma dalla quinta alla decima in quale ordine? L’ordine delle righe è sconosciuto a meno che non si specifichi la clausola ORDER BY
.
Pertanto, è buona norma utilizzare sempre la clausolaLIMIT
con la clausolaORDER BY
per vincolare le righe dei risultati in ordine univoco.,
Code language: SQL (Structured Query Language) (sql)
La figura seguente illustra l’ordine di valutazione dei tag LIMIT
clausola nel SELECT
dichiarazione:
MySQL LIMITE esempi
utilizzeremo customers
tabella dal database di esempio per la dimostrazione.,
1) l’Utilizzo di MySQL LIMITE di ottenere il più alto o il più basso righe
Questa istruzione utilizza il LIMIT
clausola di ottenere i primi cinque clienti che hanno il più alto di credito:
Code language: SQL (Structured Query Language) (sql)
Provare
In questo esempio:
- Primo,
ORDER BY
clausola ordina i clienti da crediti in alto al basso., - Quindi, la clausola
LIMIT
restituisce le prime 5 righe.
allo stesso modo, in questo esempio si utilizza il tag LIMIT
clausola di trovare 5 clienti che hanno il più basso crediti:
Code language: SQL (Structured Query Language) (sql)
Provare
In questo esempio:
- Primo,
ORDER BY
clausola ordina i clienti da crediti in basso al più alto. - Quindi, la clausola
LIMIT
restituisce le prime 5 righe.,
Poiché ci sono più di 5 clienti che hanno crediti pari a zero, il risultato della query di cui sopra può portare a un risultato incoerente.,
Per risolvere questo problema, è necessario aggiungere più di una colonna per il ORDER BY
clausola per limitare la riga in ordine:
Code language: SQL (Structured Query Language) (sql)
Provare
2) l’Utilizzo di MySQL LIMITE per la paginazione
Quando si visualizzano i dati su applicazioni, spesso si desidera dividere le righe in pagine, in cui ogni pagina contiene un certo numero di righe, come 5, 10, o 20.
Per calcolare il numero di pagine, ottieni le righe totali divise per il numero di righe per pagina., Per il recupero di righe di una pagina specifica, è possibile utilizzare la clausolaLIMIT
.
Questa query utilizza la funzione di aggregazione COUNT(*)
per ottenere le righe totali dalla tabella customers
:
Code language: SQL (Structured Query Language) (sql)
Code language: JavaScript (javascript)
Supponiamo che ogni pagina abbia 10 righe, per visualizza 122 clienti hai 13 pagine. L’ultima pagina 13 contiene solo due righe., LIMIT
clausola per ottenere righe di pagina 1, che contiene i primi 10 clienti ordinati per nome del cliente:
Code language: SQL (Structured Query Language) (sql)
Provare
la query utilizza il LIMIT
clausola per ottenere le righe della seconda pagina che includono la riga 11 – 20:
Code language: SQL (Structured Query Language) (sql)
Provare
In questo esempio, la clausola LIMIT 10, 10
restituisce 10 righe per la riga 11 – 20.,
3) l’Utilizzo di MySQL LIMITE l’ennesimo più basso o più alto valore
Per ottenere l’ennesimo più basso o più alto valore, è possibile utilizzare il seguente LIMIT
clausola:
Code language: SQL (Structured Query Language) (sql)
La clausola LIMIT n-1, 1
torna 1
riga di partenza presso la riga n
.
Ad esempio, quanto segue trova il cliente che ha il secondo credito più alto:
Code language: SQL (Structured Query Language) (sql)
Provalo
Ricontrolliamo il risultato., Questa query restituisce tutti i clienti ordinati per crediti dall’alto verso il basso:
Code language: SQL (Structured Query Language) (sql)
Provare
Come si può vedere chiaramente dall’uscita, il risultato è stato corretto come previsto.
Si noti che questa tecnica funziona quando non ci sono due clienti che hanno gli stessi limiti di credito. Per ottenere un risultato più accurato, è necessario utilizzare la funzione finestraDENSE_RANK()
.,
In questo tutorial, hai imparato come usare la clausola MySQL LIMIT
per vincolare il numero di righe restituite dall’istruzione SELECT
.
- Questo tutorial è stato utile?
- Sì