El uso de FETCH FIRST
en Oracle permite limitar la cantidad de filas devueltas por una consulta. Es una herramienta moderna y más intuitiva que otras alternativas como ROWNUM
o subconsultas para paginación y optimización de consultas.
FETCH FIRST
es una cláusula introducida en Oracle 12c como parte de la sintaxis de SQL estándar. Permite recuperar las primeras filas de una consulta ordenada según criterios específicos. Es ideal para implementar paginación o para obtener muestras limitadas de datos.
SELECT columnas
FROM tabla
[WHERE condiciones]
[ORDER BY columnas]
FETCH FIRST n ROWS ONLY;
Parámetro | Descripción |
---|---|
FETCH FIRST n ROWS
|
Indica la cantidad de filas a retornar (reemplaza al uso tradicional de ROWNUM ).
|
ONLY
|
Devuelve exactamente n filas.
|
WITH TIES
|
Incluye filas adicionales en caso de que haya empates en el ordenamiento. |
Para recuperar los 5 productos más baratos de una tabla productos
:
SELECT nombre, precio
FROM productos
ORDER BY precio ASC
FETCH FIRST 5 ROWS ONLY;
Devuelve las primeras 5 filas con los precios más bajos.
WITH TIES
para incluir empates
Si varios productos tienen el mismo precio, puedes incluirlos con WITH TIES
:
SELECT nombre, precio
FROM productos
ORDER BY precio ASC
FETCH FIRST 5 ROWS WITH TIES;
Esto garantiza que todas las filas con el mismo valor que la quinta fila se incluyan en los resultados.
Para paginación, combina OFFSET
con FETCH
:
SELECT nombre, precio
FROM productos
ORDER BY precio ASC
OFFSET 10 ROWS FETCH FIRST 5 ROWS ONLY;
Esto omite las primeras 10 filas y devuelve las siguientes 5, ideal para mostrar resultados en páginas.
Puedes combinar FETCH FIRST
con filtros WHERE
para consultas más específicas:
SELECT nombre, precio
FROM productos
WHERE categoria = 'Electrónica'
ORDER BY precio DESC
FETCH FIRST 3 ROWS ONLY;
Este ejemplo devuelve los 3 productos más caros de la categoría "Electrónica".
1. Más legible: La sintaxis es clara y específica, mejorando la comprensión del código.
2. Compatibilidad con paginación: La combinación con OFFSET
es sencilla y flexible.
3. Soporte para empates: La opción WITH TIES
permite manejar valores duplicados fácilmente.
FETCH FIRST
requiere una cláusula ORDER BY
para garantizar un conjunto de resultados predecible.
ROWNUM
.
Consulta la documentación oficial de Oracle sobre FETCH FIRST para obtener más detalles y ejemplos avanzados.
Jorge García
Fullstack developer