SQL TOP, LIMIT, FETCH FIRST ou ROWNUM Clause
La clause SQL SELECT TOP
La clause SELECT TOP est utilisée pour spécifier le nombre d'enregistrements à renvoyer.
La clause SELECT TOP est utile pour les grandes tables contenant des milliers d'enregistrements. Le renvoi d'un grand nombre d'enregistrements peut impacter les performances.
Exemple
Sélectionnez uniquement les 3 premiers enregistrements de la table Customers :
SELECT TOP 3 * FROM Customers;
Try it Yourself »
Note: Tous les systèmes de bases de données ne prennent pas en charge la clause SELECT TOP. MySQL prend en charge la clause LIMIT pour sélectionner un nombre limité d'enregistrements, tandis qu'Oracle l'utilise FETCH FIRST n ROWS ONLY et ROWNUM.
SQL Server / MS Access Syntax:
SELECT TOP number|percent column_name(s)
FROM table_name
WHERE condition;
MySQL Syntax:
SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number;
Oracle 12 Syntax:
SELECT column_name(s)
FROM table_name
ORDER BY column_name(s)
FETCH FIRST number ROWS ONLY;
Ancienne syntaxe Oracle :
SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number;
Ancienne syntaxe Oracle (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
Vous trouverez ci-dessous une sélection de la table Customers utilisée dans les exemples :
| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 1 |
Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
| 2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
| 3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
| 4 |
Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
| 5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
LIMIT
L'instruction SQL suivante montre l'exemple équivalent pour MySQL :
Exemple
Sélectionnez les 3 premiers enregistrements de la table Customers :
SELECT * FROM Customers
LIMIT 3;
Try it Yourself »
FETCH FIRST
L'instruction SQL suivante montre l'exemple équivalent pour Oracle :
Exemple
Sélectionnez les 3 premiers enregistrements de la table Customers :
SELECT * FROM Customers
FETCH FIRST 3 ROWS ONLY;
SQL TOP PERCENT Exemple
L'instruction SQL suivante sélectionne les 50 % premiers enregistrements de la table « Customers » (pour SQL Server/MS Access) :
L'instruction SQL suivante montre l'exemple équivalent pour Oracle :
Exemple
SELECT * FROM Customers
FETCH FIRST 50 PERCENT ROWS ONLY;
AJOUTER UNE CLAUSE 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) :
L'instruction SQL suivante montre l'exemple équivalent pour MySQL :
L'instruction SQL suivante montre l'exemple équivalent pour Oracle :
Exemple
SELECT * FROM Customers
WHERE Country='Germany'
FETCH FIRST 3 ROWS ONLY;
AJOUTER le mot-clé ORDER BY
Ajoutez le mot-clé ORDER BY lorsque vous souhaitez trier le résultat et renvoyer les 3 premiers enregistrements du résultat trié.
Pour SQL Server et MS Access :
Exemple
Triez le résultat par ordre alphabétique inverse par CustomerName et renvoyez les 3 premiers enregistrements :
SELECT TOP 3 * FROM Customers
ORDER BY CustomerName DESC;
Try it Yourself »
L'instruction SQL suivante montre l'exemple équivalent pour MySQL :
L'instruction SQL suivante montre l'exemple équivalent pour Oracle :
Exemple
SELECT * FROM Customers
ORDER BY CustomerName DESC
FETCH FIRST 3 ROWS ONLY;