English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En este tutorial, aprenderá cómo recuperar un número específico de registros de una tabla.
En algunos casos, es posible que no necesite devolver todas las filas de la consulta, por ejemplo, si solo desea recuperar los primeros que se unieron a la organización más recientemente.10empleados, o obtener los primeros por puntuación3estudiantes, etcétera.
Para manejar esta situación, se puede usar la cláusula TOP en declaraciones SQL. Sin embargo, la cláusula TOP solo es compatible con sistemas de bases de datos SQL Server y MS Access.
MySQL proporciona una cláusula LIMIT equivalente, mientras que Oracle proporciona la cláusula ROWNUM en declaraciones SELECT para limitar el número de filas devueltas por la consulta.
La cláusula TOP de SQL se utiliza para limitar el número de filas devueltas. Su sintaxis básica es:
SELECT TOP número | porcentaje column_list FROM table_name;
Aquí,column_listes una lista separada por comas de nombres de columnas o campos de bases de datos que se desean obtener valores (por ejemplonombre,edad,paísy otros). Vamos a ver cómo funciona.
Supongamos que en la base de datos tenemos unaemployeesLa tabla contiene los siguientes registros:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | fecha_contratación | salario | dept_id | +--------+--------------+------------+--------+---------+ | 1 | Ethan Hunt | 2001-05-01 | 5000 | 4 | | 2 | Tony Montana | 2002-07-15 | 6500 | 1 | | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | | 4 | Rick Deckard | 2007-01-03 | 7200 | 3 | | 5 | Martin Blank | 2008-06-24 | 5600 | NULL | +--------+--------------+------------+--------+---------+
La siguiente declaración devuelveempleados (employees)los tres empleados con los ingresos más altos en la tablaEmpleado.
-- Sintaxis para la base de datos SQL Server SELECT TOP 3 * FROM employees ORDER BY salary DESC;
El conjunto de resultados devuelto se mostrará como sigue:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | fecha_contratación | salario | dept_id | +--------+--------------+------------+--------+---------+ | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | | 4 | Rick Deckard | 2007-01-03 | 7200 | 3 | | 2 | Tony Montana | 2002-07-15 | 6500 | 1 | +--------+--------------+------------+--------+---------+
Si solo desea recuperar el porcentaje de filas en lugar de un número fijo de filas, puede usar la palabra clave PERCENT después del valor fijo de la cláusula TOP. Los valores decimales se redondean al siguiente valor entero (por ejemplo,1.5redondeado a2)。
La siguiente declaración devuelve los empleados con los ingresos más altos30% de los empleados.
-- Sintaxis de la base de datos SQL Server SELECT TOP 30 PORCENTAJE * FROM employees ORDER BY salary DESC;
El conjunto de resultados devuelto por la consulta anterior se mostrará como sigue:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | fecha_contratación | salario | dept_id | +--------+--------------+------------+--------+---------+ | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | | 4 | Rick Deckard | 2007-01-03 | 7200 | 3 | +--------+--------------+------------+--------+---------+
La cláusula LIMIT de MySQL tiene el mismo efecto que la cláusula TOP de SQL. Su sintaxis básica es:
SELECT column_list FROM table_name LIMIT número;
La siguiente declaración devuelveempleados (employees)los tres empleados con los ingresos más altos en la tablaEmpleado.
-- Sintaxis de la base de datos MySQL SELECT * FROM employees ORDER BY salario DESC LIMIT 3;
Después de la ejecución, obtendrá la siguiente salida:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | fecha_contratación | salario | dept_id | +--------+--------------+------------+--------+---------+ | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | | 4 | Rick Deckard | 2007-01-03 | 7200 | 3 | | 2 | Tony Montana | 2002-07-15 | 6500 | 1 | +--------+--------------+------------+--------+---------+
Nota: En la declaración SELECT, siempre utiliceORDER BYLa cláusula de oración se utiliza junto con la cláusula LIMIT. De lo contrario, es posible que no obtenga los resultados deseados.
La cláusula LIMIT admite un segundo parámetro opcional.
Cuando se especifican dos parámetros, el primer parámetro especifica el desplazamiento del primer renglón a retornar, es decir, el punto de partida, mientras que el segundo parámetro especifica el número máximo de filas a retornar. El desplazamiento inicial del renglón es 0 (no1)
Por lo tanto, si desea encontrar al empleado con el tercer salario más alto, puede ejecutar la siguiente operación:
-- Sintaxis de la base de datos MySQL SELECT * FROM employees ORDER BY salario DESC LIMIT 2, 1;
Después de ejecutar el comando anterior, solo se obtendrá un registro en el conjunto de resultados:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | fecha_contratación | salario | dept_id | +--------+--------------+------------+--------+---------+ | 2 | Tony Montana | 2002-07-15 | 6500 | 1 | +--------+--------------+------------+--------+---------+