Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.
Oracle/PLSQL: Recuperar N registros intermedios de la consulta
Pregunta: ¿Cómo puedo recuperar los N registros intermedios de la consulta?
Por ejemplo, si quiero recuperar los registros 3 a 5 de los resultados de la consulta. ¿Cómo puedo hacer esto?
Respuesta: para recuperar los N registros centrales de una consulta, puede usar la siguiente sintaxis:
SELECT * FROM (select alias_name.*, rownum rnum from (-- your ordered query --) alias_name where rownum <= UPPER_BOUND ) WHERE rnum >= LOWER_BOUND;
Por ejemplo, si quisiera recuperar los registros del 3 al 5 de la tabla de proveedores, ordenados en orden ascendente por nombre del proveedor, ejecutaría la siguiente consulta:
SELECT * FROM (select suppliers2.*, rownum rnum from (select * from suppliers ORDER BY supplier_name) suppliers2 where rownum <= 5 ) WHERE rnum >= 3;
Si quisiera recuperar los registros del 3 al 5 de la tabla de proveedores, ordenados por nombre de proveedor en orden descendente, ejecutaría la siguiente consulta:
SELECT * FROM (select suppliers2.*, rownum rnum from (select * from suppliers ORDER BY supplier_name DESC) suppliers2 where rownum <= 5 ) WHERE rnum >= 3;
Si quisiera recuperar los registros del 2 al 4 de la tabla de proveedores, ordenados por ID de proveedor en orden ascendente, ejecutaría la siguiente consulta:
SELECT * FROM (select suppliers2.*, rownum rnum from (select * from suppliers ORDER BY supplier_id) suppliers2 where rownum <= 4 ) WHERE rnum >= 2;
Si quisiera recuperar los registros del 2 al 4 de la tabla de proveedores, ordenados por ID de proveedor en orden descendente, ejecutaría la siguiente consulta:
SELECT * FROM (select suppliers2.*, rownum rnum from (select * from suppliers ORDER BY supplier_id DESC) suppliers2 where rownum <= 4 ) WHERE rnum >= 2;