在Oracle中获取一系列行

时间:2017-04-12 10:23:42

标签: java database oracle jdbc

我正在尝试在Oracle中获取一系列行,但我只能从第一行获取到行号N.

我不能这样做,以防我想获取表格之间的范围,例如行号。 2至5

让我们考虑下面的示例用户SCOTT

中的EMP表

Entire Table

案例1:从1到5获取一系列行,我得到以下内容

select EMPNO, ENAME from (select EMPNO,ENAME from EMP ORDER BY EMPNO)  WHERE ROWNUM BETWEEN 1 AND 5

First 5 Rows

案例2:现在让我们尝试在2到5之间获取3行。

select EMPNO, ENAME from (select EMPNO,ENAME from EMP ORDER BY EMPNO)  WHERE ROWNUM BETWEEN 2 AND 5

enter image description here

这给了我一个空的Resultset。这是为什么?我需要更改什么才能从表格之间的某处获得一系列行?

2 个答案:

答案 0 :(得分:0)

您可以使用RANK函数查找每个empno的排名,然后将记录从2到5过滤掉。

SELECT *
  FROM (SELECT empno, ename, RANK () OVER (ORDER BY empno) RNK FROM emp)
 WHERE RNK BETWEEN 2 AND 5;

答案 1 :(得分:0)

select * FROM (SELECT 
   ROW_NUMBER() OVER (ORDER BY EMPNO ) AS ROWID, 
   ENAME
 FROM EMP ) EMP where ROWID between 2 and 5