Cómo seleccionar las primeras N filas en MySQL
Seleccionar las primeras N filas de una tabla es una tarea fundamental cuando trabajas con bases de datos. En este tutorial veremos cómo hacerlo en MySQL con ejemplos prácticos.
Antes de seguir leyendo, quería contarte de nuestro cliente moderno de MySQL, Beekeeper Studio. Abre una tabla y te pagina las filas automáticamente, o haz clic derecho sobre ella y elige SQL: Select Top para obtener la consulta. Es gratis para MySQL, descárgalo aquí.
Uso de la cláusula LIMIT
La cláusula LIMIT en MySQL es una forma sencilla de indicar cuántas filas debe devolver el conjunto de resultados de una consulta.
Ejemplo: seleccionar las primeras 5 filas
Supón que tienes una tabla llamada employees con el siguiente esquema:
CREATE TABLE employees (
id INT,
name VARCHAR(100),
salary DECIMAL(10, 2)
);
Quieres seleccionar a los 5 empleados con mayor salario, en orden descendente.
SELECT id, name, salary
FROM employees
ORDER BY salary DESC
LIMIT 5;
Por qué funciona:
-
ORDER BY salary DESCordena las filas del salario más alto al más bajo. -
LIMIT 5restringe el resultado a las primeras 5 filas después de ordenar.
Resultado esperado:
+----+----------+--------+
| id | name | salary |
+----+----------+--------+
| 3 | Alice | 90000 |
| 5 | Bob | 85000 |
| 2 | Charlie | 75000 |
| 6 | Diana | 70000 |
| 4 | Edward | 68000 |
+----+----------+--------+
Manejo de empates con LIMIT
Cuando hay valores empatados, usar solo LIMIT puede no dar resultados consistentes si no manejas los empates. Usa ORDER BY con más columnas para desempatar.
Ejemplo: manejar empates con un orden secundario
Para manejar salarios empatados, ordena por el id del empleado como criterio secundario:
SELECT id, name, salary
FROM employees
ORDER BY salary DESC, id ASC
LIMIT 5;
Por qué funciona:
- Agregar
id ASCgarantiza que, cuando los salarios estén empatados, siempre se elijan los empleados con elidmás bajo.
Uso de LIMIT para paginar
Además de seleccionar las primeras N filas, a menudo necesitamos paginar los resultados seleccionando un rango específico de filas.
Ejemplo: seleccionar las siguientes 5 filas
Para paginar los resultados y seleccionar las filas 6-10 según el salario:
SELECT id, name, salary
FROM employees
ORDER BY salary DESC
LIMIT 5 OFFSET 5;
Por qué funciona:
-
LIMIT 5indica cuántas filas devolver. -
OFFSET 5omite las primeras 5 filas.
Resultado esperado:
El siguiente grupo de 5 empleados después de los primeros 5:
+----+---------+--------+
| id | name | salary |
+----+---------+--------+
| 1 | Frank | 67000 |
| 7 | Grace | 64000 |
| 8 | Hannah | 60000 |
| 9 | Ivan | 59000 |
| 10 | Jane | 58000 |
+----+---------+--------+
Conclusión
Seleccionar las primeras N filas en MySQL con la cláusula LIMIT es eficiente y fácil. Si puede haber empates, asegura un orden estable usando columnas adicionales en el ORDER BY. Esta técnica sencilla es esencial en muchas aplicaciones, como analítica y reportes, sobre todo cuando trabajas con grandes conjuntos de datos.
Al dominar estas técnicas, tendrás más control sobre la obtención y manipulación de datos en MySQL.
Beekeeper Studio es una GUI de MySQL gratuita y de código abierto
Últimamente he usado Beekeeper Studio para mi trabajo con MySQL y rápidamente se ha vuelto una de mis herramientas de bases de datos favoritas. La interfaz es limpia, moderna y sin distracciones, así que es fácil concentrarse en las consultas sin el desorden que tienen otras herramientas. - Surendra Singh
Beekeeper Studio es un cliente de MySQL rápido, intuitivo y fácil de usar. También es compatible con muchas otras bases de datos y funciona de maravilla en Windows, Mac y Linux.
Lo que dicen los usuarios de MySQL sobre Beekeeper Studio
Elegí este programa después de años de usar phpMyAdmin: se siente como entrar a un mundo de mayor calidad; aquí realmente sentí que de verdad se preocupan por el usuario. El concepto, la implementación, la experiencia práctica: le estoy sinceramente agradecido a Matthew por todo.
Herramienta fabulosa, el IDE más práctico que he encontrado hasta ahora para administrar bases de datos Postgres y MySql: simplemente funciona, sin complicaciones :-)