【发布时间】:2011-02-24 02:59:02
【问题描述】:
我正在开发一个 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
【问题讨论】:
-
我认为最后一行应该写
WHERE rnum >5(而不是>=),否则你会得到15条记录,只跳过前4条。