Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Oracle中获取一系列行_Java_Database_Oracle_Jdbc - Fatal编程技术网

Java 在Oracle中获取一系列行

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,

我试图在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, 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