为了账号安全,请及时绑定邮箱和手机立即绑定

ROWNUM在分页查询中是如何工作的?

ROWNUM在分页查询中是如何工作的?

元芳怎么了 2019-07-16 10:23:50
ROWNUM在分页查询中是如何工作的?因此,我想在Oracle DB中选择一个行的范围。我需要这样做,因为我在表中有数以百万行的行,并且我希望将结果分页给用户(如果您知道在客户端进行分页的另一种方法,我将使用JavaFX(如果重要的话),但我不认为通过网络发送所有数据以在客户端分页是个好主意)。所以在读了这篇文章之后:SQL ROWNUM如何返回特定范围之间的行,我有以下查询:Select * From (Select t.*, rownum r from PERSON t) Where r > 100 and r < 110;这个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从表A中排除使用select*[除Columna]的列?显然,我需要创建一个视图或临时表,但是还有其他方法考虑我的查询吗?它能确保正确的分页吗?我读这篇文章“ROWNUM分页”一节,即我应该通过一些唯一的方法对值进行排序,以获得一致的分页(所以我猜排序是rownum很好,如果你能确认的话)。难道它不辜负使用的目的吗?FIRST_ROWS(N)?我希望这不是太多,我可以把它们分成不同的问题,但我认为让它们崩溃是相关的,因为它们是密切相关的。谢谢:)
查看完整描述

3 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

问题2的回答:在Oracle 12中,您可以使用分页

select owner, object_name, object_idfrom torder by owner, object_name
OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY;


查看完整回答
反对 回复 2019-07-16
?
MMTTMM

TA贡献1869条经验 获得超4个赞

我通常编写这样的查询:

select * from (
    select a.*, rownum as rn  
    from table_name a    where rownum <= 110)where rn > 100


查看完整回答
反对 回复 2019-07-16
  • 3 回答
  • 0 关注
  • 394 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信