SQL SELECT TOP, LIMIT, ROWNUMCláusulas


Cláusula SQL SELECT TOP

La sentencia SELECT TOP se utiliza en SQL para limitar el número de filas en el conjunto de resultados devuelto. Normalmente se usa cuando solo se necesitan consultar las primeras filas de datos, especialmente cuando el conjunto de datos es muy grande, ya que puede mejorar significativamente el rendimiento de la consulta.

La cláusula SELECT TOP es muy útil para tablas grandes con miles de registros.

Nota:

  • SELECT TOPSe usa TOP en SQL Server y MS Access, mientras que en MySQL y PostgreSQL se usa LIMITLIMITpalabra clave.
  • Oracle no tenía una palabra clave directamente equivalente antes de la versión 12c; se puede medianteROWNUMlograr una funcionalidad similar, pero en la versión 12c y superiores se introdujoFETCH FIRST。
  • Cuando se usaTOPoLIMIT, es mejor combinarlo conORDER BYcláusula, para asegurar que las filas devueltas sean las primeras filas en un orden específico.

Sintaxis de SQL Server / MS Access

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

number|percent: Especifica el número de filas o el porcentaje a devolver.

  • number: Número específico de filas.
  • percent: Porcentaje del conjunto de datos.

Sintaxis de MySQL

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

Sintaxis de Oracle

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

Sintaxis de PostgreSQL

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

Ejemplos

Supongamos que tenemos una tabla llamada Employees, que contiene los siguientes datos:

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

SQL Server y MS Access devuelven las primeras 3 filas de datos:

SELECT TOP 3 EmployeeName, Salary
FROM Employees;

Devuelve el 10% de los datos:

SELECT TOP 10 PERCENT EmployeeName, Salary
FROM Employees;

MySQL devuelve las primeras 3 filas de datos:

SELECT EmployeeName, Salary
FROM Employees
LIMIT 3;

PostgreSQL devuelve las primeras 3 filas de datos:

SELECT EmployeeName, Salary
FROM Employees
LIMIT 3;

Oracle devuelve las primeras 3 filas de datos:

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

Base de datos de demostración

En este tutorial, usaremos la base de datos de muestra EJEMPLO.

A continuación se muestran los datos seleccionados de la tabla "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 | Ejemplo       | 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     |
+----+---------------+---------------------------+-------+---------+


Ejemplo de MySQL SELECT LIMIT

La siguiente sentencia SQL selecciona los primeros dos registros de la tabla "Websites":

Ejemplo

SELECT * FROM Websites LIMIT 2;

Al ejecutar el SQL anterior, los datos son los siguientes:



Ejemplo de SQL SELECT TOP PERCENT

En Microsoft SQL Server también se puede usar un porcentaje como parámetro.

La siguiente sentencia SQL selecciona el 50 por ciento de los registros de la tabla websites:

Ejemplo

La siguiente operación se puede ejecutar en la base de datos de Microsoft SQL Server.

SELECT TOP 50 PERCENT * FROM Websites;
Otras extensiones