Compatible desde Oracle 12c en adelante, sirve para limitar el número de filas devueltas por una consulta y hacer paginación, cumple la misma función que el LIMIT de MySQL.
Sintaxis completa
[ OFFSET offset ROWS ]
FETCH NEXT [ row_count | percent PERCENT ] ROWS [ ONLY | WITH TIES ]Lenguaje del código: CSS (css)
1. Cláusula OFFSET (opcional)
Función:saltarse las N primeras filas, se usa para paginación.
- Si se omite, el offset vale 0 y empieza a leer desde la primera fila
- Offset negativo: se trata como valor 0
- Offset con valor
NULLo mayor que el total de filas: no devuelve ninguna fila - Offset con decimales: se corta la parte decimal y solo queda la parte entera
2. Cláusula FETCH
Función: define cuántas filas devolver, admite modo por número de filas y por porcentaje.
ONLY: devuelve exactamente las filas indicadas (el más utilizado)WITH TIES: devuelve también registros con el mismo valor de ordenación que la última fila obtenida. Es obligatorio usarlo junto conORDER BY
Códigos de ejemplo
Obtener las 5 primeras filas ordenadas por name de forma descendente
SELECT *
FROM student
ORDER BY name DESC
FETCH NEXT 5 ROWS ONLY;
Leer las 2 primeras filas
select * from student fetch next 2 rows only;Lenguaje del código: JavaScript (javascript)
Resultado: devuelve los dos primeros registros jim, lisa.
Paginación: saltar 3 filas, leer 4 filas (página 2, 4 elementos por página)
SELECT *
FROM student
ORDER BY id
OFFSET 3 ROWS
FETCH NEXT 4 ROWS ONLY;
Devolver por porcentaje, obtener el 10 % del total de datos
SELECT *
FROM student
FETCH NEXT 10 PERCENT ROWS ONLY;
Uso de WITH TIES (incluir registros empatados)
SELECT *
FROM student
ORDER BY score DESC
FETCH NEXT 3 ROWS WITH TIES;
Si varios registros tienen la misma puntuación que el tercer puesto, todos se devuelven, la cantidad final puede superar 3.
FETCH
Previous: Consulta condicional WHERE