Come si limita il numero di righe restituite da una query? Se ti servono solo i primi 5 studenti, il dipendente con lo stipendio più alto o la lista dei top-10 prodotti, il comando LIMIT è proprio quello che fa per te!
Quando lavori con i database, i risultati delle query possono essere enormi. In queste situazioni, è necessario limitare la quantità di dati restituiti per:
- Ridurre il carico su server e rete.
- Analizzare i dati più facilmente senza scorrere pagine infinite.
Ecco una semplice analogia: immagina di voler offrire da bere a una ragazza al bar, ma per sbaglio paghi da bere a tutti i presenti. Sicuramente fa scena, ma ti servivano davvero tutte quelle ragazze? Quindi impariamo a ordinare solo quello che ci serve, e LIMIT ci aiuta proprio in questo.
Sintassi base di LIMIT
Ecco come funziona:
SELECT colonna1, colonna2
FROM tabella
LIMIT numero_righe;
Esempio 1: Limitare i record
Supponiamo di avere una tabella students con 1000 righe. Vogliamo vedere solo i primi 3 record:
SELECT *
FROM students
LIMIT 3;
Risultato:
| id | name | age |
|---|---|---|
| 1 | Otto | 20 |
| 2 | Anna | 22 |
| 3 | Alex | 19 |
Semplice: invece di una lista lunghissima, vediamo solo tre righe. LIMIT ha restituito il numero di righe che abbiamo chiesto.
Applicazioni pratiche di LIMIT
Esempio 2: Top prodotti
Lavori con una tabella di prodotti products e vuoi sapere nomi e prezzi dei cinque articoli più costosi. Prima ordiniamo i record in ordine decrescente di prezzo, poi limitiamo il risultato:
SELECT product_name, price
FROM products
ORDER BY price DESC
LIMIT 5;
Risultato:
| product_name | price |
|---|---|
| iPhone 16 Pro Max | 1500 |
| MacBook Pro | 1200 |
| AirPods Pro | 300 |
| iPad Pro | 280 |
| Apple Watch | 250 |
Ora vedi solo i top-5 prodotti col prezzo più alto.
Come LIMIT aiuta a testare le query
Quando sviluppi query SQL, sicuramente ti capita di lavorare con grandi quantità di dati. LIMIT ti permette di controllare prima la correttezza della query, restituendo solo pochi dati. Ad esempio:
SELECT *
FROM transactions_log
LIMIT 10;
Quando sei sicuro che la logica della query è giusta, puoi togliere LIMIT.
Particolarità nell'uso di LIMIT
1. LIMIT senza ORDER BY
Se non specifichi l'ordinamento con ORDER BY, LIMIT restituisce i dati in ordine casuale — o meglio, nell'ordine in cui sono salvati nella tabella. Di solito non è un problema, ma a volte può essere imprevedibile.
Per esempio:
SELECT name, age
FROM students
LIMIT 3;
Senza ORDER BY non puoi essere sicuro di quali tre record finiranno nel risultato.
Per evitarlo, usa ORDER BY:
SELECT name, age
FROM students
ORDER BY age DESC
LIMIT 3;
2. Uso combinato con WHERE
Possiamo combinare WHERE per filtrare le righe e LIMIT per limitare il risultato. È comodo quando ci sono troppi dati e ti interessano solo le prime corrispondenze.
SELECT *
FROM students
WHERE age > 18
LIMIT 5;
Questa query restituisce i primi 5 studenti con più di 18 anni.
3. Applicazione pratica: visualizzare la prima pagina di dati
Se lavori con un sistema di visualizzazione dati (tipo una web app), LIMIT si usa per mostrare la prima pagina di dati.
SELECT *
FROM employees
ORDER BY hire_date
LIMIT 10;
Qui ottieni i primi 10 dipendenti ordinati per data di assunzione.
Esempio avanzato: combinare LIMIT con aggregati
Immagina di voler mostrare le tre categorie di prodotti più popolari:
SELECT category, COUNT(*) AS total_products
FROM products
GROUP BY category
ORDER BY total_products DESC
LIMIT 3;
Questa query prima raggruppa i prodotti per categoria, li ordina per quantità e poi lascia solo tre righe.
Come funziona esattamente l'operatore GROUP BY e la funzione COUNT() lo vedrai nelle prossime lezioni.
Errori tipici nell'uso di LIMIT
Lavorando con LIMIT, puoi incontrare alcuni problemi:
"Ordine casuale delle righe": se ti dimentichi ORDER BY, i dati possono arrivare in un ordine inaspettato. Specifica sempre l'ordinamento se è importante.
"Taglio di dati importanti": ad esempio, se due record hanno lo stesso valore nella colonna di ordinamento, LIMIT può restituire un risultato incompleto. Aggiungi criteri di ordinamento extra per evitare queste situazioni.
SELECT *
FROM students
ORDER BY age DESC, name ASC
LIMIT 5;
"Combinazione sbagliata con WHERE". A volte le condizioni di filtro restringono così tanto il risultato che LIMIT diventa inutile. Per esempio, se WHERE restituisce solo 2 record e LIMIT è 10, avrai comunque solo 2 righe.
"Dipendenza dal database". Alcuni DBMS hanno una sintassi alternativa per limitare le righe (tipo TOP in SQL Server). PostgreSQL usa proprio LIMIT.
Perché LIMIT serve nella vita reale?
Interfacce con tanti record: pensa a un e-commerce dove sfogli i prodotti a pagine. La prima pagina può avere solo 10 record, e LIMIT lo rende possibile.
Report: spesso ti interessa solo la parte alta dei dati (tipo i top-5 dipendenti, leader di vendita, studenti con i voti più alti).
Testing e ottimizzazione delle query: invece di lavorare con milioni di righe, puoi testare velocemente la query su un piccolo campione.
GO TO FULL VERSION