我正在尝试在Oracle中获取一系列行,但我只能从第一行获取到行号N.
我不能这样做,以防我想获取表格之间的范围,例如行号。 2至5
让我们考虑下面的示例用户SCOTT
中的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
这给了我一个空的Resultset。这是为什么?我需要更改什么才能从表格之间的某处获得一系列行?
答案 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