Oracle中用于分页的LIMIT和OFFSET的替代方法
Oracle中用于分页的LIMIT和OFFSET的替代方法
这个问题已经有答案了:
我正在开发一个Web应用程序,需要对排序结果进行分页。我通常使用LIMIT/OFFSET来完成这个目的。
在Oracle中,分页排序的最佳方法是什么?我看到一些示例使用rownum和子查询。那是不是正确的方法?你能给我一个将此SQL翻译为Oracle的示例吗:
SELECT fieldA,fieldB FROM table ORDER BY fieldA OFFSET 5 LIMIT 14
(我正在使用Oracle 10g,如果有用的话)
谢谢!
回答:
使用karim79提供的下面的链接,此SQL看起来像:
SELECT * FROM ( SELECT rownum rnum, a.* FROM( SELECT fieldA,fieldB FROM table ORDER BY fieldA ) a WHERE rownum <=5+14 ) WHERE rnum >=5
admin 更改状态以发布 2023年5月24日
从oracle 12c开始,您可以使用前N个查询。
SELECT fieldA,fieldB FROM table ORDER BY fieldA OFFSET 5 ROWS FETCH NEXT 14 ROWS ONLY;
http://www.oracle-base.com/articles/12c/row-limiting-clause-for-top-n-queries-12cr1.php