Java 在Oracle中获取一系列行
我试图在Oracle中获取一系列行,但只能从第一行获取到行号N 如果我想在表之间获取一个范围,比如第2行到第5行,我就不能这样做Java 在Oracle中获取一系列行,java,database,oracle,jdbc,Java,Database,Oracle,Jdbc,我试图在Oracle中获取一系列行,但只能从第一行获取到行号N 如果我想在表之间获取一个范围,比如第2行到第5行,我就不能这样做 让我们考虑下面示例用户史葛中所见的EMP表。 案例1:获取从1到5的行范围,我得到以下结果 select EMPNO, ENAME from (select EMPNO,ENAME from EMP ORDER BY EMPNO) WHERE ROWNUM BETWEEN 1 AND 5 案例2:现在让我们尝试获取2到5之间的3行 select EMPNO,
让我们考虑下面示例用户史葛
中所见的EMP表。 案例1:获取从1到5的行范围,我得到以下结果select EMPNO, ENAME from (select EMPNO,ENAME from EMP ORDER BY EMPNO) WHERE ROWNUM BETWEEN 1 AND 5
案例2:现在让我们尝试获取2到5之间的3行
select EMPNO, ENAME from (select EMPNO,ENAME from EMP ORDER BY EMPNO) WHERE ROWNUM BETWEEN 2 AND 5
这给了我一个空的结果集。为什么呢?我需要更改什么才能从表之间的某个位置获得一系列行?您可以使用
RANK
函数查找每个empno
的排名,然后过滤掉从2到5的记录
SELECT *
FROM (SELECT empno, ename, RANK () OVER (ORDER BY empno) RNK FROM emp)
WHERE RNK BETWEEN 2 AND 5;
如上所述,作为补充,您可以阅读
select * FROM (SELECT
ROW_NUMBER() OVER (ORDER BY EMPNO ) AS ROWID,
ENAME
FROM EMP ) EMP where ROWID between 2 and 5