Consultas · paginación

OFFSET

Omite una cantidad de filas ordenadas antes de devolver el siguiente bloque del resultado.

Lectura: 5–7 minEjemplo comprobadoVariantes por motor
Contenido de esta guía

Qué hace OFFSET

OFFSET descarta las primeras filas de un resultado y empieza a devolver datos después de esa posición. Suele combinarse con LIMIT o FETCH para dividir una consulta en páginas.

El desplazamiento se aplica al resultado ordenado. Sin un ORDER BY suficientemente estable, dos ejecuciones pueden entregar filas distintas en la misma página.

Sintaxis habitual

PostgreSQL, MySQL y SQLite
SELECT columnas
FROM tabla
ORDER BY columna, clave_unica
LIMIT 3 OFFSET 3;
SQL Server
SELECT columnas
FROM tabla
ORDER BY columna, clave_unica
OFFSET 3 ROWS
FETCH NEXT 3 ROWS ONLY;

Ejemplo guiado

Segunda página de productos
SELECT id, nombre, precio
FROM productos
ORDER BY precio, id
LIMIT 3 OFFSET 3;
Resultado comprobado en SQLite
idnombreprecio
10Altavoz54.0
5Auriculares69.9
8Disco SSD89.0

El motor ordena por precio y usa id para deshacer empates. Después omite tres filas y devuelve las tres siguientes.

Fórmula de paginación: para páginas numeradas desde 1, el desplazamiento suele ser (pagina - 1) × tamaño.

Errores frecuentes

Paginar sin un orden único

ORDER BY precio no determina el orden entre productos con el mismo precio. Añade una clave estable, como ORDER BY precio, id.

Los desplazamientos grandes también pueden ser costosos porque el motor debe localizar y descartar muchas filas. Para recorridos extensos, una paginación por cursor —por ejemplo, continuar después del último id visto— puede escalar mejor.

Comprueba lo aprendido

Básica · tercera página

Devuelve los últimos tres productos del ejemplo

Mantén páginas de tres filas y el mismo orden. Escribe la consulta de la tercera página.

Compatibilidad entre motores

PostgreSQL, MySQL y SQLite permiten la forma LIMIT … OFFSET …. SQL Server integra OFFSET y FETCH dentro de ORDER BY. La sintaxis exacta cambia, pero la recomendación de fijar un orden predecible se mantiene.

Qué debes recordar

  • OFFSET omite filas antes de devolver el bloque.
  • La paginación necesita un ORDER BY estable y, preferiblemente, único.
  • La sintaxis de límite cambia en SQL Server.
  • Desplazamientos grandes pueden justificar paginación por cursor.

Conceptos relacionados

Fuentes técnicas consultadas