LIMIT en SQL: qué es, cómo funciona y ejemplos prácticos

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, LIMIT con OFFSET puede 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 de OFFSET.

Ejemplo de paginación eficiente:

SELECT * FROM productos
WHERE id > 1000
ORDER BY id ASC
LIMIT 10;

Errores comunes con LIMIT

  1. 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.

  1. Confundir LIMIT con TOP
    👉 En SQL Server no existe LIMIT. Hay que usar TOP.
  2. OFFSET muy grande
    👉 En tablas grandes, OFFSET 100000 puede ser muy costoso. Mejor usar paginación con claves.
  3. Esperar resultados consistentes sin índices
    👉 Si no hay índice en la columna de ordenación, LIMIT puede implicar un escaneo completo de la tabla.

Buenas prácticas con LIMIT

  • Siempre usar ORDER BY junto a LIMIT para garantizar consistencia.
  • Para paginación en tablas grandes, preferir paginación por clave (WHERE id > último_id) en lugar de OFFSET.
  • Usar LIMIT para 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.

Scroll al inicio