La cláusula LIMIT en SQL se utiliza para restringir el número de filas devueltas por una consulta.
Es especialmente útil cuando no necesitamos todos los registros de una tabla, sino solo una parte de ellos.
👉 Con LIMIT podés mostrar las primeras filas, implementar paginación o depurar consultas sin traer miles de registros.
Sintaxis básica de LIMIT
SELECT columnas
FROM tabla
[WHERE condiciones]
[ORDER BY columna]
LIMIT n;
n→ número máximo de filas que devuelve la consulta.
Ejemplo:
SELECT * FROM productos LIMIT 5;
👉 Devuelve las primeras 5 filas de la tabla productos.
LIMIT con OFFSET
En la mayoría de los motores, LIMIT puede combinarse con OFFSET para controlar desde qué fila comenzar a mostrar resultados.
SELECT columnas
FROM tabla
ORDER BY columna
LIMIT n OFFSET m;
n: cantidad de filas que queremos.m: cantidad de filas a saltar antes de empezar.
Ejemplo:
SELECT * FROM productos
ORDER BY precio DESC
LIMIT 10 OFFSET 20;
👉 Devuelve 10 productos, empezando desde el número 21 más caro.
Ejemplos prácticos de LIMIT
1) Mostrar los 3 primeros clientes
SELECT * FROM clientes
LIMIT 3;
2) Obtener los 5 productos más caros
SELECT nombre, precio
FROM productos
ORDER BY precio DESC
LIMIT 5;
3) Paginar resultados (ejemplo página 2 con 10 resultados por página)
SELECT * FROM pedidos
ORDER BY fecha DESC
LIMIT 10 OFFSET 10;
👉 La primera página usa OFFSET 0, la segunda OFFSET 10, la tercera OFFSET 20, etc.
4) Insertar con SELECT + LIMIT
INSERT INTO clientes_backup
SELECT * FROM clientes
LIMIT 100;
👉 Copia solo 100 clientes de la tabla original (más sobre INSERT INTO)
LIMIT vs TOP vs ROWNUM
La cláusula LIMIT no está en el estándar SQL, pero es ampliamente usada.
Cada motor tiene su propia forma de limitar resultados:
- MySQL / PostgreSQL / SQLite → usan
LIMIT. - SQL Server → usa
TOP.
SELECT TOP 5 * FROM clientes;
- Oracle (antes de 12c) → usa
ROWNUM.
SELECT * FROM clientes WHERE ROWNUM <= 5;
- Oracle 12c+ → soporta
FETCH FIRST n ROWS ONLY.
SELECT * FROM clientes FETCH FIRST 5 ROWS ONLY;
👉 Es importante conocer estas diferencias si trabajás con distintos SGBD.
LIMIT con expresiones
En algunos motores, LIMIT acepta expresiones o variables:
SET @cantidad = 5;
SELECT * FROM productos LIMIT @cantidad;
👉 Útil para consultas dinámicas en aplicaciones.
LIMIT y rendimiento
Aunque LIMIT es muy práctico, hay que tener en cuenta:
- Si la consulta no tiene
ORDER BY, el orden de las filas no está garantizado. - Con tablas grandes,
LIMITconOFFSETpuede ser lento, porque el motor igual recorre las filas para saltarlas. - Para paginación eficiente en tablas muy grandes, se recomienda usar paginación basada en claves (ej.:
WHERE id > último_id) en lugar deOFFSET.
Ejemplo de paginación eficiente:
SELECT * FROM productos
WHERE id > 1000
ORDER BY id ASC
LIMIT 10;
Errores comunes con LIMIT
- Usar LIMIT sin ORDER BY
SELECT * FROM empleados LIMIT 5;
👉 El resultado puede variar, porque el orden no está definido. Siempre es mejor usar ORDER BY.
- Confundir LIMIT con TOP
👉 En SQL Server no existeLIMIT. Hay que usarTOP. - OFFSET muy grande
👉 En tablas grandes,OFFSET 100000puede ser muy costoso. Mejor usar paginación con claves. - Esperar resultados consistentes sin índices
👉 Si no hay índice en la columna de ordenación,LIMITpuede implicar un escaneo completo de la tabla.
Buenas prácticas con LIMIT
- Siempre usar
ORDER BYjunto aLIMITpara garantizar consistencia. - Para paginación en tablas grandes, preferir paginación por clave (
WHERE id > último_id) en lugar deOFFSET. - Usar
LIMITpara probar consultas sin sobrecargar el sistema. - Cuando se insertan/copien datos, asegurarse de que el subconjunto seleccionado es el deseado.
Ejemplo avanzado: top clientes del mes
SELECT c.nombre, SUM(p.total) AS gasto
FROM clientes c
JOIN pedidos p ON c.id = p.cliente_id
WHERE p.fecha >= '2025-01-01'
GROUP BY c.nombre
ORDER BY gasto DESC
LIMIT 10;
👉 Devuelve los 10 clientes que más gastaron en enero de 2025 (más sobre GROUP BY y SUM).
LIMIT y subconsultas
Podemos usar LIMIT dentro de subconsultas (cuando el motor lo permite):
SELECT * FROM productos
WHERE id IN (
SELECT id FROM productos
ORDER BY precio DESC
LIMIT 5
);
👉 Devuelve los 5 productos más caros mediante una subconsulta.
Preguntas frecuentes (FAQ)
1. ¿LIMIT es parte del estándar SQL?
No. Es específico de MySQL, PostgreSQL y SQLite. Otros motores usan variantes (TOP, ROWNUM).
2. ¿Qué pasa si uso LIMIT sin ORDER BY?
El orden no está garantizado. Puede variar entre ejecuciones.
3. ¿Se puede usar LIMIT con OFFSET?
Sí. Ejemplo: LIMIT 10 OFFSET 20 devuelve 10 filas empezando desde la fila 21.
4. ¿Es eficiente usar LIMIT en tablas grandes?
Sí, pero con OFFSET grande puede volverse lento. Es mejor paginar por claves.
5. ¿LIMIT elimina duplicados?
No. Solo restringe la cantidad de filas. Si querés eliminar duplicados, usá DISTINCT.
Conclusión
La cláusula LIMIT en SQL es una herramienta muy útil para:
- Restringir resultados.
- Implementar paginación.
- Depurar consultas sin sobrecargar el servidor.
Aunque no forma parte del estándar SQL, es ampliamente soportada en bases como MySQL, PostgreSQL y SQLite, y tiene equivalentes en otros motores.
Bien usada, permite mejorar la experiencia de usuario en aplicaciones y optimizar consultas.
Controla la cantidad de filas devueltas en ORDER BY y LIMIT y vuelve al Glosario SQL completo.