【发布时间】:2011-07-29 07:50:28
【问题描述】:
我在 Oracle 中找到了很多分页示例。我现在正在使用的特定的看起来像这样:
SELECT * FROM (
SELECT a.*, ROWNUM RNUM FROM (
**Select * From SomeTable**) a
WHERE ROWNUM <= 500) b
WHERE b.RNUM >= 1
粗体线代表“原始”查询。其余的 SQL 用于实现分页。我遇到的问题是一个本身完全有效的查询;当我将它放在我的分页代码中时会失败。
举个例子——这个查询会失败:
SELECT TABLE1.*, TABLE1.SomeValue FROM TABLE1
出现不明确的列错误。但是,没有我的额外代码;它会运行得很好。我有大量“已保存”查询,但我必须确保我的分页解决方案不会使它们无效。
我使用 SQL Developer 作为我的 Oracle 查询工具,它设法实现了分页,即使上述查询在我将其包装在分页代码中时也会失败。谁能告诉我他们是怎么做到的?
【问题讨论】:
-
无论如何,您通常不应该在生产代码中使用“
SELECT *”。枚举内部查询中的所有列以消除歧义,从而使查询对架构更改具有弹性(例如,将列添加到表中时)。
标签: database oracle pagination paging