TOP

SQL TOP, LIMIT, FETCH FIRST et ROWNUM

SQL SELECT TOP descriptif

L'expression SELECT TOP permet de préciser le nombre d'enregistrements à sélectionner.

SQL SELECT TOP est utile pour les grandes tables contenant des milliers d'enregistrements, car le renvoi d'un grand nombre d'enregistrements peut affecter les performances du système.


Tous les systèmes de bases de données ne prennent pas en charge l'expression SELECT TOP. MySQL prend en charge l'expression LIMIT pour sélectionner un nombre limité d'enregistrements, tandis que Oracle utilise FETCH FIRST n ROWS ONLY et ROWNUM.

SQL Server / MS Access Syntaxe :

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

MySQL Syntaxe :

SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number

Oracle 12 Syntaxe :

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

Syntaxe Oracle obsolète :

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

Syntaxe Oracle obsolète (avec ORDER BY) :

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

Base de données de démonstration

Voici un exemple de la table "Customers" ("Clients") de la base de données "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

SQL TOP, LIMIT et FETCH FIRST Exemples

L'instruction SQL suivante sélectionne les trois premiers enregistrements de la table "Customers" (pour SQL Server/MS Access) :

SELECT TOP 3 * 
FROM Customers

L'instruction SQL suivante montre un exemple équivalent pour MySQL :

Run SQLSELECT * 
FROM Customers 
LIMIT 3

L'instruction SQL suivante montre un exemple équivalent pour Oracle :

SELECT * 
FROM Customers 
FETCH FIRST 3 ROWS ONLY

Exemple SQL TOP PERCENT

L'instruction SQL suivante sélectionne les premiers 50 % des enregistrements de la table "Customers" (pour SQL Server/MS Access) :

SELECT TOP 50 PERCENT * 
FROM Customers

L'instruction SQL suivante montre un exemple équivalent pour Oracle :

SELECT * 
FROM Customers 
FETCH FIRST 50 PERCENT ROWS ONLY

Utilisation de l'expression WHERE

L'instruction SQL suivante sélectionne les trois premiers enregistrements de la table "Customers" où le pays est "Germany" (pour SQL Server/MS Access) :

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

L'instruction SQL suivante montre un exemple équivalent pour MySQL :

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

L'instruction SQL suivante montre un exemple équivalent pour Oracle :

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