所以我想在Oracle DB中选择一系列行.我需要这样做,因为我在表中有数百万行,我想将结果分页给用户(如果你知道在客户端执行此操作的另一种方法,我使用JavaFX,如果它很重要,但我不认为通过网络发送所有数据以在客户端对它们进行分页是个好主意.
所以看完这篇文章后:SQL ROWNUM如何在特定范围之间返回行,我有以下查询:
Select * From (Select t.*, rownum r from PERSON t) Where r > 100 and r < 110;
Run Code Online (Sandbox Code Playgroud)
该100和110只是例子.在应用程序中,我只要求下限并添加10_000的大小以获取下一个10_000行.
现在rownum列出现在结果中,我不想看到它.由于我对SQL不是很熟悉,所以我的问题是:
Select * From Person Where rownum > 100 and rownum < 110;返回0行?为什么没有简单的方法做某事Select ... FROM ... WHERE rownum BETWEEN lowerBound AND upperBound?
如何摆脱r结果值中的列?从那里SQL使用SELECT*[除了columnA] FROM tableA排除一列?我显然需要创建一个视图或临时表,但考虑我的查询还有另一种方法吗?
它确保正确的分页吗?我读了这篇文章 "用ROWNUM分页",它说我应该通过一些独特的东西来命令这些值以获得一致的分页(所以rownum如果你能确认,我猜测排序很好).它不会破坏使用目的FIRST_ROWS(N)吗?
我希望它不是太多,我可以分成不同的问题,但我认为让它们紧密相关是有意义的.
谢谢 :)