首批通过分布式安全可靠测评,为关键业务系统打造
Oracle 模式分页查询的注意事项
更新时间:2026-05-26 09:46
本文列出 OceanBase 数据库的 Oracle 模式分页实现方法。
Oracle 模式采用 rownum 分页,并且参考以下的方式来实现。
select * from
(select rownum rn, stu.* from students tu where rownum<15)
where rn>10;
select * from
(select stu.*, rownum rn from students tu where rownum<15)
where rn>10;
在使用 rownum 进行分页查询时,建议使用子查询的方式,对表名和 rownum 取别名,然后在复查询中对 rownum 的别名进行过滤。
在下面的例子中,直接使用 rownum 而不适用别名会出现结果不符合预期的情况。
示例:预期获取第 11,12,13,14 条记录,实际结果为空。
select * from student where rownum<15 and rownum>10
原因是:rownum 是最终结果集中记录的顺序。当指定了 rownum>10 时,出现在结果中的前 10 条记录就会被舍弃,导致第 11 条记录的 rownum=1,因此第 11 条记录也不满足结果,同样被舍去...... 最终,结果集为空。
适用版本
OceanBase 数据库所有版本。