【发布时间】:2018-07-15 04:36:57
【问题描述】:
我想知道oracle中的分页。为了在sql server中进行分页,有OFFSET ROWS FETCH NEXT,其中order by是强制性的才能进行分页。
我想弄清楚我是否要在 oracle 中进行分页是order by 强制。
以下是我了解到的在 oracle 中进行分页的方法:
1) OFFSET n ROWS FETCH NEXT m ROWS ONLY: 订单是强制性的,这里是猜测。
2) 行数: 有了这个,我不确定orderby是否是强制性的分页 与 RowNum。
我正在尝试找出以下问题的答案,如果有人可以帮助我解答,我将不胜感激:
1) 是否必须使用 OFFSET n ROWS FETCH NEXT m ROWS ONLY 进行排序?
2) RowNum 是否必须按顺序排列?
如果我有这样的选择查询:
select Id,Amount from source
3) 如何在上面的sql查询中使用RowNum创建分页?
【问题讨论】:
-
想想如果你只有 10 条数据并且你对 2 行进行分页。现在,当您尝试获取下 2 行时,它将来自您的 10 个数据中的任何一个。重复您的行数据有一些更改,但如果您执行 orderby,您将始终显示新行。
-
检查subquery。看起来
ORDER BY不是强制性的。 -
@WernfriedDomscheit 仍然有按条款提及的顺序
-
是的,但是根据图表你可以绕过它。检查documentation:要获得一致的结果,请指定 order_by_clause 以确保确定的排序顺序。因此,您可以省略但结果不再是确定的。请先阅读文档 - 第二次询问。
-
@User - 是的,因为它不是确定性的。 order-by 在语法上不是强制性的,但在逻辑上是必要的。
标签: sql oracle pagination