掌握 Oracle SQL 分页的 ROWNUM
本指南阐明了如何在 Oracle SQL 查询中有效使用 ROWNUM 进行分页。 我们将解决常见陷阱并展示最佳实践。
*为什么 `SELECT FROM Person WHERE rownum > 100 与 rownum
ROWNUM 分配发生在谓词过滤之后但排序或聚合之前。 由于 ROWNUM 在 赋值之后按顺序递增 ,因此像 rownum > 1
这样的条件将始终返回空集。 第一行收到 ROWNUM = 1,但条件从未满足。
SELECT ... FROM ... WHERE rownum BETWEEN lowerBound AND upperBound
12c 之前的 Oracle 版本不支持这种直接 BETWEEN
分页方法。 但是,Oracle 12c 及更高版本提供了更高级的 OFFSET ... FETCH
语法(例如 SELECT ... FROM ... OFFSET 4 ROWS FETCH NEXT 4 ROWS ONLY
)。
抑制 ROWNUM 列
为了避免显示 ROWNUM 列,请在 SELECT
语句中显式列出所需的列,而不是使用 SELECT *
。对于不太频繁的需求,SQL*Plus NOPRINT
命令可以暂时隐藏不需要的列。
使用 ROWNUM 确保准确分页
正确实现,ROWNUM 可提供准确的分页。 关键是首先根据您想要的顺序ORDER BY
您的数据,然后使用 ROWNUM 选择特定的行子集。 ROWNUM 的这种顺序分配特性需要排序步骤。
以上是如何在 Oracle SQL 查询中有效地使用 ROWNUM 进行分页?的详细内容。更多信息请关注PHP中文网其他相关文章!