TOP

SQL TOP, LIMIT, FETCH FIRST e ROWNUM

SQL SELECT TOP Descrizione

L'espressione SELECT TOP viene utilizzata per specificare il numero di record da selezionare.

SQL SELECT TOP è utile per tabelle di grandi dimensioni con migliaia di record, poiché la restituzione di un numero elevato di record può influire sulle prestazioni del sistema.


Non tutti i sistemi di database supportano l'espressione SELECT TOP. MySQL supporta l'espressione LIMIT per selezionare un numero limitato di record, mentre Oracle utilizza FETCH FIRST n ROWS Only e ROWNUM.

SQL Server / MS Access Sintassi:

SELECT TOP number|percent column_name(s)
FROM table_name
WHERE condition

MySQL Sintassi:

SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number

Oracle 12 Sintassi:

SELECT column_name(s)
FROM table_name
ORDER BY column_name(s)
FETCH FIRST number ROWS ONLY

Sintassi Oracle deprecata:

SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number

Sintassi Oracle obsoleta (con ORDER BY):

SELECT *
FROM (SELECT column_name(s) FROM table_name ORDER BY column_name(s))
WHERE ROWNUM <= number

Banca dati dimostrativa

Quello che segue è un esempio della tabella "Customers" ("Clienti") del database "Northwind":

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.5021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.5023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

Esempi SQL TOP, LIMIT e FETCH FIRST

La seguente istruzione SQL seleziona i primi tre record dalla tabella "Customers" (per SQL Server/MS Access):

SELECT TOP 3 * 
FROM Customers

La seguente istruzione SQL mostra un esempio equivalente per MySQL:

Run SQLSELECT * 
FROM Customers 
LIMIT 3

La seguente istruzione SQL mostra un esempio equivalente per Oracle:

SELECT * 
FROM Customers 
FETCH FIRST 3 ROWS ONLY

SQL TOP PERCENT Esempio

La seguente istruzione SQL seleziona il primo 50% dei record dalla tabella "Customers" (per SQL Server/MS Access):

SELECT TOP 50 PERCENT * 
FROM Customers

La seguente istruzione SQL mostra un esempio equivalente per Oracle:

SELECT * 
FROM Customers 
FETCH FIRST 50 PERCENT ROWS ONLY

Utilizzando l'espressione WHERE

La seguente istruzione SQL seleziona i primi tre record dalla tabella "Customers" dove il paese è "Germany" (per SQL Server/MS Access):

SELECT TOP 3 * 
FROM Customers 
WHERE Country = 'Germany'

La seguente istruzione SQL mostra un esempio equivalente per MySQL:

Run SQLSELECT * 
FROM Customers 
WHERE Country = 'Germany' 
LIMIT 3

La seguente istruzione SQL mostra un esempio equivalente per Oracle:

SELECT * 
FROM Customers 
WHERE Country = 'Germany' 
FETCH FIRST 3 ROWS ONLY