3 回答
TA贡献1864条经验 获得超2个赞
SELECT * from
(
select m.*, rownum r
from maps006 m
)
where r > 49 and r < 101
TA贡献1900条经验 获得超5个赞
SELECT *
FROM (
SELECT q.*, rownum rn
FROM (
SELECT *
FROM maps006
ORDER BY
id
) q
)
WHERE rn BETWEEN 50 AND 100
请注意双嵌套视图。ROWNUM在之前评估ORDER BY,因此需要正确编号。
如果省略ORDER BY子句,则不会获得一致的顺序。
TA贡献1890条经验 获得超9个赞
我知道这是一个老问题,但是在最新版本中提及新功能很有用。
从Oracle 12c开始,您可以使用新的Top-n Row限制功能。无需编写子查询,不依赖于ROWNUM。
例如,以下查询将按升序返回员工的最高薪水到第4高薪至第7高薪:
SQL> SELECT empno, sal
2 FROM emp
3 ORDER BY sal
4 OFFSET 4 ROWS FETCH NEXT 4 ROWS ONLY;
EMPNO SAL
---------- ----------
7654 1250
7934 1300
7844 1500
7499 1600
SQL>
- 3 回答
- 0 关注
- 1112 浏览
添加回答
举报