SQL SELECT TOP, LIMIT, ROWNUMClauses


Clause SQL SELECT TOP

L'instruction SELECT TOP est utilisée pour limiter le nombre de lignes dans l'ensemble de résultats renvoyé en SQL. Elle est généralement utilisée lorsque vous n'avez besoin d'interroger que les premières lignes de données, en particulier lorsque l'ensemble de données est très volumineux, car elle peut améliorer considérablement les performances des requêtes.

La clause SELECT TOP est très utile pour les grandes tables contenant des milliers d'enregistrements.

Remarque :

  • SELECT TOPUtilisé dans SQL Server et MS Access, tandis que dans MySQL et PostgreSQL, on utiliseLIMITmot-clé.
  • Avant la version 12c, Oracle n'avait pas de mot-clé directement équivalent ; il pouvaitROWNUMimplémenter une fonctionnalité similaire, mais dans la version 12c et supérieure, il a introduitFETCH FIRST。
  • Lors de l'utilisationTOPouLIMIT, il est préférable de l'associer àORDER BYla clause, pour garantir que les lignes renvoyées soient les premières lignes dans un ordre spécifique.

Syntaxe SQL Server / MS Access

SELECT TOP number|percent column1, column2, ...
FROM table_name;

number|percent : spécifie le nombre de lignes ou le pourcentage à renvoyer.

  • number: nombre spécifique de lignes.
  • percent: pourcentage du jeu de données.

Syntaxe MySQL

SELECT column1, column2, ...
FROM table_name
LIMIT number;

Syntaxe Oracle

SELECT column1, column2, ...
FROM table_name
FETCH FIRST number ROWS ONLY;

Syntaxe PostgreSQL

SELECT column1, column2, ...
FROM table_name
LIMIT number;

Exemples

Supposons que nous ayons une table nommée Employees, qui contient les données suivantes :

EmployeeIDEmployeeNameSalaire
1John Smith50000
2Maria Garcia60000
3Liam Johnson70000
4Emma Wilson80000
5Oliver Brown90000

SQL Server et MS Access renvoient les 3 premières lignes de données :

SELECT TOP 3 EmployeeName, Salary
FROM Employees;

Renvoyer les 10 % premiers des données :

SELECT TOP 10 PERCENT EmployeeName, Salary
FROM Employees;

MySQL renvoie les 3 premières lignes de données :

SELECT EmployeeName, Salary
FROM Employees
LIMIT 3;

PostgreSQL renvoie les 3 premières lignes de données :

SELECT EmployeeName, Salary
FROM Employees
LIMIT 3;

Oracle renvoie les 3 premières lignes de données :

SELECT EmployeeName, Salary
FROM Employees
FETCH FIRST 3 ROWS ONLY;

Base de données de démonstration

Dans ce tutoriel, nous utiliserons la base de données d'exemple EXAMPLE.

Ci-dessous se trouvent les données sélectionnées dans la table "Websites" :

mysql> SELECT * FROM Websites;
+----+---------------+---------------------------+-------+---------+
| id | name          | url                       | alexa | country |
+----+---------------+---------------------------+-------+---------+
|  1 | Google        | https://www.google.cm/    |     1 | USA     |
|  2 | 淘宝          | https://www.taobao.com/   |    13 | CN      |
|  3 | Example       | http://www.example.com/    |  5000 | USA     |
|  4 | 微博           | http://weibo.com/         |    20 | CN      |
|  5 | Facebook      | https://www.facebook.com/ |     3 | USA     |
|  7 | stackoverflow | http://stackoverflow.com/ |     0 | IND     |
+----+---------------+---------------------------+-------+---------+


Exemple MySQL SELECT LIMIT

L'instruction SQL suivante sélectionne les deux premiers enregistrements de la table "Websites" :

Exemple

SELECT * FROM Websites LIMIT 2;

Après avoir exécuté le SQL ci-dessus, les données sont les suivantes :



Exemple SQL SELECT TOP PERCENT

Dans Microsoft SQL Server, vous pouvez également utiliser un pourcentage comme paramètre.

L'instruction SQL suivante sélectionne les 50 premiers pour cent des enregistrements de la table websites :

Exemple

Les opérations suivantes peuvent être exécutées dans une base de données Microsoft SQL Server.

SELECT TOP 50 PERCENT * FROM Websites;
Autres extensions