0Pricing
Coding Interview Prep · Lección

LIMIT, OFFSET y FETCH FIRST

Conozca la sintaxis de paginación en MySQL, Postgres y SQL Server

LIMIT, OFFSET y FETCH FIRST es una lección gratuita de Coding Interview Prep en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Coding Interview Prep, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Coding Interview Prep incluye 4 lecciones en total.

La paginación: una cuestión de dialectos

«¿Cómo obtendría las primeras 10 filas?» parece una pregunta trivial hasta que el entrevistador añade «y hágalo con SQL estándar» o «ahora en SQL Server». La sintaxis para limitar filas es una de las características más fragmentadas entre las bases de datos.

En esta lección se presentan las tres formas principales: LIMIT (MySQL/Postgres/SQLite), OFFSET ... FETCH (estándar ANSI, SQL Server) y el antiguo TOP (SQL Server).

LIMIT en MySQL y PostgreSQL

La forma más común es LIMIT n, que limita el resultado a n filas. MySQL, PostgreSQL y SQLite la admiten.

Es importante que LIMIT se aplica después de ORDER BY según el orden lógico de ejecución, por lo que casi siempre se combinan. Limitar sin ordenar produce un conjunto arbitrario de filas.

SELECT name, salary
FROM employees
ORDER BY salary DESC
LIMIT 10;

OFFSET para omitir filas

La paginación necesita un desplazamiento para omitir las páginas anteriores. OFFSET m omite las primeras m filas antes de aplicar el límite.

Para obtener la página 3 con un tamaño de página de 10, omita 20 filas y tome 10. La fórmula general es OFFSET = (page - 1) * page_size.

SELECT name, salary
FROM employees
ORDER BY salary DESC
LIMIT 10 OFFSET 20;

La sintaxis con comas de MySQL

MySQL también admite una forma con dos argumentos separados por comas: LIMIT offset, count. Observe que el orden está invertido con respecto a la forma con palabras clave, lo que suele confundir.

LIMIT 20, 10 significa omitir 20 filas y tomar 10, lo mismo que LIMIT 10 OFFSET 20. Prefiera la forma con palabras clave para expresarse con claridad en las entrevistas.

SELECT name, salary
FROM employees
ORDER BY salary DESC
LIMIT 20, 10;

El estándar ANSI: FETCH FIRST

El estándar SQL utiliza OFFSET ... ROWS FETCH FIRST ... ROWS ONLY. PostgreSQL, Oracle 12c+, DB2 y SQL Server 2012+ lo admiten.

Su sintaxis es más extensa, pero es la opción portable. ROW y ROWS son intercambiables; FIRST y NEXT son sinónimos.

SELECT name, salary
FROM employees
ORDER BY salary DESC
OFFSET 20 ROWS
FETCH FIRST 10 ROWS ONLY;

SQL Server TOP

El código antiguo de SQL Server usa TOP n justo después de SELECT. No tiene un desplazamiento integrado, por lo que por sí solo no puede paginar más allá de la primera página.

En una entrevista pueden pedirle que convierta TOP al formato estándar. SELECT TOP 10 con ORDER BY equivale a FETCH FIRST 10 ROWS ONLY.

SELECT TOP 10 name, salary
FROM employees
ORDER BY salary DESC;

TOP WITH TIES

Una característica interesante de SQL Server: TOP n WITH TIES devuelve filas adicionales cuando empatan con la última fila según la clave de ORDER BY.

Si tres personas comparten el décimo salario más alto, TOP 10 WITH TIES las devuelve a todas, posiblemente 12 filas. Es el equivalente de FETCH FIRST ... WITH TIES en el estándar.

SELECT TOP 10 WITH TIES name, salary
FROM employees
ORDER BY salary DESC;

ORDER BY es obligatorio para una paginación determinista

Este es el punto más importante en una entrevista: usar OFFSET/LIMIT sin un ORDER BY determinista es peligroso. El motor puede elegir filas diferentes para la «página 2» de las que eligió para la «página 1», porque el orden subyacente no está definido.

Ordene siempre por un conjunto de claves único o suficientemente único. Si la columna de ordenación contiene duplicados, añada la clave primaria como criterio de desempate para que las páginas no se solapen ni omitan filas.

SELECT id, name, salary
FROM employees
ORDER BY salary DESC, id ASC
LIMIT 10 OFFSET 20;

Por qué la paginación con OFFSET escala mal

Los entrevistadores con experiencia suelen profundizar en el rendimiento. Un OFFSET grande sigue obligando a la base de datos a generar y descartar todas las filas omitidas. OFFSET 100000 LIMIT 10 lee 100.010 filas para devolver 10.

El coste crece linealmente con el número de página, lo que hace lenta la paginación profunda en tablas grandes.

Paginación por clave (seek)

La alternativa escalable es la paginación por clave: en lugar de omitir filas por cantidad, filtra las que aparecen después del último valor que vio. Esto utiliza un recorrido por rango de índice y mantiene un rendimiento rápido a cualquier profundidad.

Debe recordar la clave de ordenación de la última fila de la página anterior y solicitar las filas posteriores a ella. Mencionar la paginación por clave es una buena señal de experiencia.

SELECT id, name, created_at
FROM events
WHERE created_at < '2026-01-01 10:00:00'
ORDER BY created_at DESC
LIMIT 10;

Resumen por dialecto

Memorice esta tabla para recordarlo rápidamente en una entrevista:

  • MySQL / Postgres / SQLite: LIMIT n OFFSET m
  • Estándar / SQL Server 2012+ / Oracle 12c+: OFFSET m ROWS FETCH FIRST n ROWS ONLY
  • SQL Server antiguo: SELECT TOP n (sin offset)
  • Oracle antiguo (anterior a 12c): filtrar por ROWNUM en una subconsulta

Comprobación rápida

Elija la consulta correcta para la página 3 con un tamaño de página de 10.

Repaso

Aspectos esenciales de la paginación:

  • LIMIT/OFFSET para MySQL, Postgres y SQLite; OFFSET ... FETCH FIRST para el estándar y las versiones modernas de SQL Server; TOP para SQL Server antiguo.
  • OFFSET = (page - 1) * page_size.
  • Combínelo siempre con un ORDER BY determinista y añada un criterio de desempate único.
  • Los offsets grandes son lentos; prefiera la paginación por clave para la paginación profunda.

Preguntas frecuentes

¿La lección «LIMIT, OFFSET y FETCH FIRST» es gratis?

Sí — el texto completo de «LIMIT, OFFSET y FETCH FIRST» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Coding Interview Prep, actualiza a CoddyKit PRO. El curso de Coding Interview Prep incluye 4 lecciones en total.

¿Qué aprenderé en «LIMIT, OFFSET y FETCH FIRST»?

Conozca la sintaxis de paginación en MySQL, Postgres y SQL Server Practicas Coding Interview Prep con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Coding Interview Prep?

No se requiere experiencia previa. Coding Interview Prep en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «LIMIT, OFFSET y FETCH FIRST»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Coding Interview Prep?

Sí. Cada lección de Coding Interview Prep incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Ordenación por varias columnas y posición de NULL
  2. LIMIT, OFFSET y FETCH FIRST
  3. Devolver de forma fiable las filas superiores
  4. Ordenar por expresiones y alias
← Volver a Coding Interview Prep