【发布时间】:2015-07-31 00:52:51
【问题描述】:
所以我想在 Oracle 数据库中选择一系列行。我需要这样做,因为我在表中有数百万行,并且我想将结果分页给用户(如果您知道在客户端执行此操作的另一种方法,如果重要,我将使用 JavaFX,但我不认为通过网络发送所有数据以在客户端对它们进行分页是个好主意。
所以在阅读了这篇文章后: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 不是很有经验,所以这是我的问题:
-
为什么(这是我在搜索 SO 之前的第一次尝试)
Select * From Person Where rownum > 100 and rownum < 110;返回 0 行? -
为什么没有像
Select ... FROM ... WHERE rownum BETWEEN lowerBound AND upperBound这样的简单方法? -
如何去掉结果值中的
r列?从那里SQL exclude a column using SELECT * [except columnA] FROM tableA? 我显然需要创建一个视图或一个临时表,但是考虑到我的查询还有其他方法吗? -
它是否确保正确的分页?我阅读了this article 部分“使用 ROWNUM 分页”,它说我应该通过独特的方式对值进行排序以获得一致的分页(所以我想通过
rownum进行排序很好,如果你能确认的话)。这不是违背了使用FIRST_ROWS(N)的目的吗?
我希望不要太多,我可以分成不同的问题,但我认为将它们折叠起来是相关的,因为它们密切相关。
【问题讨论】:
标签: sql oracle pagination rownum