Clause SQL TOP, LIMIT, FETCH FIRST ou ROWNUM
La clause SQL SELECT TOP
La SELECT TOP
clause est utilisée pour spécifier le nombre d'enregistrements à retourner.
La SELECT TOP
clause est utile sur les grandes tables avec des milliers d'enregistrements. Le renvoi d'un grand nombre d'enregistrements peut avoir un impact sur les performances.
Remarque : Tous les systèmes de base de données ne prennent pas en charge la
SELECT TOP
clause. MySQL prend en charge la LIMIT
clause permettant de sélectionner un nombre limité d'enregistrements, tandis qu'Oracle utilise and .
FETCH FIRST n ROWS ONLY
ROWNUM
Syntaxe SQL Server/MS Access :
SELECT TOP number|percent column_name(s)
FROM table_name
WHERE condition;
Syntaxe MySQL :
SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number;
Syntaxe Oracle 12 :
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 "Clients" dans l'exemple de base de données Northwind :
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 |
SQL TOP, LIMIT et FETCH FIRST Exemples
L'instruction SQL suivante sélectionne les trois premiers enregistrements de la table "Clients" (pour SQL Server/MS Access) :
Exemple
SELECT TOP 3 * FROM Customers;
L'instruction SQL suivante montre l'exemple équivalent pour MySQL :
Exemple
SELECT * FROM Customers
LIMIT 3;
L'instruction SQL suivante montre l'exemple équivalent pour Oracle :
Exemple
SELECT * FROM Customers
FETCH FIRST 3 ROWS ONLY;
SQL TOP PERCENT Exemple
L'instruction SQL suivante sélectionne les 50 premiers % des enregistrements de la table "Clients" (pour SQL Server/MS Access) :
Exemple
SELECT TOP 50 PERCENT * FROM Customers;
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 "Clients", où le pays est "Allemagne" (pour SQL Server/MS Access) :
Exemple
SELECT TOP 3 * FROM Customers
WHERE Country='Germany';
L'instruction SQL suivante montre l'exemple équivalent pour MySQL :
Exemple
SELECT * FROM Customers
WHERE Country='Germany'
LIMIT 3;
L'instruction SQL suivante montre l'exemple équivalent pour Oracle :
Exemple
SELECT * FROM Customers
WHERE Country='Germany'
FETCH FIRST 3 ROWS ONLY;