我想在Oracle数据库中选择一系列行。这是必须的,因为该表中有数百万行数据,我想向用户分页显示结果(如果你知道另一种在客户端上进行此操作的方法,请告诉我。我正在使用JavaFX,但我认为将所有数据发送到客户端以分页不是一个好办法)。
在阅读了这篇文章之后:SQL ROWNUM how to return rows between a specific range,我得到了以下查询语句:
在阅读了这篇文章之后:SQL ROWNUM how to return rows between a specific range,我得到了以下查询语句:
Select * From (Select t.*, rownum r from PERSON t) Where r > 100 and r < 110;
100
和110
只是示例。在应用程序中,我只需请求下限并添加大小为10,000以获取接下来的10,000行。
现在结果中出现了rownum列,我不想看到它。由于我对SQL不是很熟悉,所以这是我的问题:
1.为什么(这是我第一次尝试,直到我在SO上搜索)Select * From Person Where rownum > 100 and rownum < 110;
返回0行?
2.为什么没有简单的方法做类似Select ... FROM ... WHERE rownum BETWEEN lowerBound AND upperBound
的事情?
3.如何摆脱结果值中的r列?从那里SQL exclude a column using SELECT * [except columnA] FROM tableA? 我需要创建一个视图或临时表,但考虑到我的查询,还有其他方法吗?
4.它是否确保正确的分页?我读过这篇文章中的“使用ROWNUM进行分页”部分,该部分说我应该按某些唯一的东西排序以获得一致的分页(所以我猜按rownum排序是可以的,如果你能确认的话)。这难道不是使用的目的吗?
我希望这不会太多,我可以将其拆分为单独的问题,但我认为将它们折叠在一起是相关的。