Oracle rownum 用法 --使用rownum 实现获取记录

本文介绍了如何使用Oracle的ROWNUM关键字来获取特定范围的记录,包括获取前N条记录和指定范围记录的方法。通过嵌套查询和NOT IN操作,详细解释了ROWNUM的工作原理和限制,强调了在设置条件时考虑序列号从1开始的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现以下查询:

(1)获取前两条的记录;

(2)获取第三条到第六条的记录;

表 student ,记录数8条

(1)获取前两条的记录

直接生成

select * from student where rownum<3

也可以使用嵌套 方法1:先将rownum生成

select *

from (select rownum as rn,s.* from student_kw s where rownum>=1)

where rn <3

方法二:in 嵌套

select * from student

where s#  in (select s# from student where rownum<3)

(2)获取第三条到第六条的记录

嵌套语句 方法一:

先将rownum 生成(select rownum as rn,s.* from student  s where rownum>=1),再进行选择。

select *

from (select rownum as rn,s.* from student  s where rownum>=1)

where rn >2 and rn<7

方法二:

两层限制,但需要注意的是,第二次的rownum是在第一次rownum生成之后的结果集的基础上再次限制,所以记录数是有所变化的。例如本例中原始数据记录是8条,第一次rownum<3后去除了2条,只剩下了7条,所以要取3-6的记录,此时第三在选择时序号已经变成了1,所以rownum应该是>5,而不是7,要相应减2。

select *  from student

where s# not in  (select s# from student where rownum<3)

and rownum<5

以此类推,获取其他记录时,也是用前面所提到的方法就可以解决。

总结:

(1)rownum在是在符合条件的结果集后加的一个序列号。

(2)序列号每次从1开始,所以1是不能被抛弃的。所以在你施加条件取数据的时候条件必须包含1。

所以当条件为rownum>数值时,是没有结果的。因为当它选择的时候,数据第一条的值为1,当这条不符合时,下一条就变成了1,

以此类推,导致虽然不会报错,但是找不到结果。

(3)在需要中间数据记录或者后面数据记录的时候,需要用嵌套写法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值