Vai al contenuto principale

Come usare al meglio la clausola SQL LIMIT

Scopri come applicare la clausola SQL LIMIT per filtrare i dati. Padroneggia l’uso di LIMIT nei database PostgreSQL e MySQL.
· 8 min leggi

Scopri con l'IA

La clausola LIMIT in SQL controlla il numero di record restituiti in una query. Come suggerisce il nome, la clausola LIMIT limita le righe mostrate dopo il filtraggio dei dati. Questa clausola è importante quando gestisci dataset di grandi dimensioni ma vuoi recuperare solo porzioni specifiche di dati.

Se aspiri a lavorare con i dati, ti consiglio vivamente i corsi di DataCamp Introduction to SQL e SQL Fundamentals per acquisire competenze rilevanti in SQL per l’analisi dei dati.

La risposta breve: cos’è la clausola SQL LIMIT?

La clausola LIMIT in SQL è utile per specificare il numero di record che una query deve restituire dopo il filtraggio dei dati. Questa tecnica permette di restituire solo un sottoinsieme di dati per la visualizzazione o l’analisi. Pertanto, la clausola LIMIT è importante per suddividere grandi quantità di dati in blocchi più piccoli nella paginazione. È anche usata per ottimizzare le prestazioni ed evitare query molto grandi che potrebbero rallentare il database.

L’esempio seguente mostra l’uso di base della clausola LIMIT per mostrare solo i primi 10 record dalla tabella employees.

-- Select all columns from the employees table
-- and limit the number of returned rows to 10.
SELECT * 
FROM employees
LIMIT 10;

Sintassi della clausola SQL LIMIT

La clausola LIMIT in SQL è inclusa nell’istruzione SELECT per controllare il numero di record restituiti da una query. La clausola LIMIT viene aggiunta alla fine dell’istruzione per filtrare i record come specificato. Puoi anche consultare il SQL Basics Cheat Sheet di DataCamp per saperne di più su LIMIT e altre clausole SQL comuni.

-- Select columns column1, column2, ... from the table table_name
SELECT column1, column2, ...
FROM table_name
-- Limit the number of rows returned to number_of_rows
LIMIT number_of_rows;

Ecco la clausola LIMIT in un esempio pratico. La query mostrerà solo 10 record della tabella employees dalle colonne first_name, last_name e department.

-- Select first_name, last_name, and department from the employees table
SELECT first_name, last_name, department
FROM employees
-- Limit the number of rows returned to 10
LIMIT 10;

A volte puoi usare la clausola opzionale OFFSET per saltare un numero specifico di righe prima di mostrare quelle desiderate. Di seguito è mostrata la sintassi di OFFSET.

-- Select column_names from the table table_name
SELECT column_names
FROM table_name
-- Arrange the results in ascending order based on column_name
ORDER BY column_name
-- Limit the number of rows returned to number_of_rows, starting from offset_value
LIMIT number_of_rows OFFSET offset_value;

Nella query SQL sopra, number_of_rows indica il numero di righe da restituire, mentre offset_value indica quante righe la query deve saltare prima di restituirle. 

L’esempio seguente mostra come usare le clausole SQL OFFSET e LIMIT per controllare il numero di righe da restituire. Mentre la clausola LIMIT specifica di restituire 10 record, la clausola OFFSET nella query salta i primi 5 record. Pertanto, i risultati mostreranno i record dalla sesta alla quindicesima riga (10 righe).

-- Select first_name, last_name, and department from the employees table
SELECT first_name, last_name, department
FROM employees
-- Limit the number of rows returned to 10, starting from the 6th row (offset of 5)
LIMIT 10 OFFSET 5;

Punti importanti da ricordare sulla clausola SQL LIMIT

Capire come implementare correttamente la clausola LIMIT e le sue varianti nei diversi database SQL è fondamentale per ottimizzare le prestazioni delle query e garantire un recupero accurato dei dati. Vediamo alcuni punti importanti. 

Posizionamento della clausola LIMIT nell’istruzione SELECT

La clausola LIMIT è solitamente posizionata alla fine dell’istruzione SELECT dopo la clausola FROM. Se usi altre clausole di aggregazione opzionali come WHERE, GROUP BY e ORDER BY, assicurati che la clausola LIMIT sia alla fine della query.

-- Select all columns from the employees table
SELECT *
FROM employees
-- Limit the number of rows returned to 5, starting from the 21st row (offset of 20)
LIMIT 10 OFFSET 20;

Combinare LIMIT con la clausola ORDER BY

La clausola LIMIT può essere combinata con l’aggregato ORDER BY per ottenere risultati coerenti e prevedibili. Questa tecnica assicura che i dati siano ordinati in un certo modo prima di recuperarli. Nell’esempio seguente, ordiniamo i dati per hire_date in ordine decrescente prima di mostrare le righe filtrate.

-- Select all columns from the employees table
SELECT *
FROM employees
-- Arrange the results in descending order based on hire_date
ORDER BY hire_date DESC
-- Limit the number of rows returned to 10
LIMIT 10;

Ti consiglierei il career track di DataCamp Associate Data Analyst in SQL e il corso Reporting in SQL per saperne di più sulle funzioni di aggregazione e le loro applicazioni nell’analisi dei dati.

Variazioni e sintassi di LIMIT tra i database

Gli esempi sopra mostrano l’uso delle clausole LIMIT in SQL nei database supportati PostgreSQL, SQLite e MySQL.

Per ottenere risultati simili in SQL Server, considera l’uso della funzione TOP per controllare il numero di record da restituire da un dato set di dati.

-- Select the top 10 records of first_name, last_name from the employees table
SELECT TOP 10 first_name, last_name
FROM employees
-- Arrange the results in descending order based on hire_date
ORDER BY hire_date DESC;

Allo stesso modo, il database Oracle supporta l’uso di FETCH FIRST n ROWS ONLY per controllare il numero di record da restituire in una query.

-- Select the first_name and last_name columns from the employees table
SELECT first_name, last_name
FROM employees
-- Order the results in descending order based on hire_date
ORDER BY hire_date DESC
-- Limit the number of rows returned to the first 10 rows
FETCH FIRST 10 ROWS ONLY;

LIMIT e OFFSET nella paginazione

LIMIT e OFFSET in SQL sono solitamente combinati per ottenere una paginazione efficiente dei dati. Questa tecnica assicura che i grandi dataset siano suddivisi in blocchi più piccoli e gestibili per una visualizzazione adeguata.

Nell’esempio seguente, le clausole LIMIT e OFFSET limitano le righe visualizzate a 10 ma partendo dalla 21ª riga.

-- Select all columns from the employees table
SELECT *
-- Arrange the results in descending order based on hire_date
FROM employees
ORDER BY hire_date DESC
-- Limit the number of rows returned to 10, starting from the 21st row (offset of 20)
LIMIT 10 OFFSET 20;

Casi d’uso comuni della clausola SQL LIMIT

  • Paginazione: Quando è combinata con la clausola OFFSET, la clausola LIMIT è usata nelle applicazioni web per la paginazione dei dati. Questa tecnica mostra i dati in blocchi/sottoinsiemi più piccoli, ad esempio su pagine web diverse.
  • Ottimizzazione delle prestazioni: La clausola LIMIT può migliorare le prestazioni delle query riducendo il carico sui server di database. Lo fa recuperando e restituendo sottoinsiemi di dati più piccoli alla volta.
  • Campionamento dei dati: La clausola LIMIT è utile nell’analisi dei dati per recuperare sottoinsiemi più piccoli. Questo metodo aiuta gli analisti a migliorare le prestazioni durante l’analisi.

Limitazioni del comando SQL LIMIT

Le limitazioni della clausola LIMIT in SQL includono le seguenti:

  • Mancanza di supporto in tutti i database: La clausola LIMIT non è supportata in tutti i database. Ad esempio, non è disponibile in SQL Server e Oracle. 
  • Problemi di prestazioni con valori OFFSET elevati: Usare valori OFFSET grandi può rallentare i server di database, causando esecuzioni di query più lente.

Per evitare le limitazioni dei diversi database, considera le seguenti alternative.x

La clausola TOP in SQL Server

La clausola TOP restituisce gli stessi risultati della clausola LIMIT per il database SQL Server.

-- Select the top 10 rows from the employees table ordered by hire_date
SELECT TOP 10 first_name, last_name
FROM employees
ORDER BY hire_date DESC;

FETCH FIRST n ROWS ONLY in SQL Server e DB2

FETCH FIRST n ROWS ONLY restituisce risultati simili a quelli della clausola LIMIT per i database SQL Server e DB2.

-- Select the first 10 rows from the employees table ordered by hire_date
SELECT first_name, last_name
FROM employees
ORDER BY hire_date DESC
FETCH FIRST 10 ROWS ONLY;

ROWNUM in Oracle

Nel database Oracle, la funzione ROWNUM controlla il numero di record restituiti. La funzione è combinata in una sottoquery per filtrare i dati come richiesto.

-- Select the top 10 rows from the employees table ordered by hire_date
SELECT * FROM (
    SELECT first_name, last_name
    FROM employees
    ORDER BY hire_date DESC
) WHERE ROWNUM <= 10;

Conclusione

La clausola LIMIT in SQL è importante per limitare il numero di righe visualizzate dopo il recupero dei dati da un database. Come professionista dei dati, è fondamentale comprendere i diversi casi d’uso della clausola LIMIT per l’analisi e la manipolazione dei dati. Allo stesso modo, dovresti considerare il supporto del database alla clausola LIMIT e usare funzioni alternative quando lavori con database non compatibili come SQL Server e Oracle.

Per capire le diverse applicazioni della clausola SQL LIMIT, continua a fare pratica con dataset differenti. I corsi di DataCamp Learn SQL e Intermediate SQL sono adatti per acquisire competenze avanzate in SQL. Consiglio anche la SQL Associate Certification di DataCamp per dimostrare le tue conoscenze in SQL e distinguerti tra gli altri professionisti dei dati.

Allan Ouko

Autore

Allan Ouko

Technical writer di Data Science con esperienza pratica in data analytics, business intelligence e data science. Scrivo contenuti pratici e orientati al settore su SQL, Python, Power BI, Databricks e data engineering, basati su lavoro di analytics reale. La mia scrittura unisce profondità tecnica e impatto sul business, aiutando i professionisti a trasformare i dati in decisioni sicure.

Domande frequenti

A cosa serve la funzione SQL LIMIT?

La funzione SQL LIMIT controlla il numero di righe restituite dai dati filtrati.

Qual è l’uso principale di SQL LIMIT?

SQL LIMIT è usato principalmente per la paginazione dei dati sulle pagine web, per limitare il numero di righe visualizzate.

La clausola SQL LIMIT è supportata in tutti i database?

La funzione SQL LIMIT è supportata solo nei database PostgreSQL, MySQL e SQLite. La clausola non è supportata nei database SQL Server e Oracle.

Qual è l’alternativa alla clausola LIMIT nei database non supportati?

Le alternative alla funzione LIMIT in SQL Server sono le clausole TOP e FETCH FIRST n ROWS ONLY. Il database Oracle usa la funzione ROWNUM come alternativa a LIMIT.

A cosa serve OFFSET nella clausola SQL LIMIT?

Possiamo usare OFFSET per specificare quante righe saltare prima di restituire il numero di righe indicato dalla clausola LIMIT.

Argomenti

Correlato