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 mediante
ROWNUMlograr una funcionalidad similar, pero en la versión 12c y superiores se introdujoFETCH FIRST。 - Cuando se usa
TOPoLIMIT, 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:
| EmployeeID | EmployeeName | Salary |
|---|---|---|
| 1 | John Smith | 50000 |
| 2 | Maria Garcia | 60000 |
| 3 | Liam Johnson | 70000 |
| 4 | Emma Wilson | 80000 |
| 5 | Oliver Brown | 90000 |
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
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.