Oracle rownum

Rownum 语句:rownum oracle 中的一个伪例,在表中不存在。

Rownum 是在查询到的结果集之后,再加上去的,从1开始

可以和*同用(提到这个是因为曾经有人说不能和同用)


例:Rownum 应用

create table prod(

id varchar2(10)primary key,

color varchar2(10),

amount number

)

insert into prod values('P001',''124);

insert into prod values('P002',''34);

insert into prod values('P003',''null);

insert into prod values('P004',''890);

insert into prod values('P005',''14);

insert into prod values('P006',''345);

insert into prod values('P007',''23);

insert into prod values('P008','绿'323);

insert into prod values('P009',''234);

select * from prod;

Oracle rownum - 小镜子~ - 菜园子
 


获取前3行的数据:

select * from prod

where rownum<=3

Oracle rownum - 小镜子~ - 菜园子
 

获取4-7行的数据:

如果我们这么写,得到的只能是一张空表

select * from prod

where rownum between 4 and 7


Oracle rownum - 小镜子~ - 菜园子
 

原因:

Rownum 是在查询到的结果集之后,再加上去的,从1开始


因此我们只能从1-7行里面,截取掉1-3行的数据:


如果我们这样写,会发现结果并不正确

select * from prod 

where rownum<=7 and id not in (select id from prod where rownum<4)

执行结果:

Oracle rownum - 小镜子~ - 菜园子
 

原因:貌似oracle中的where语句,如果有子查询,都会先执行子查询

解决方案:

select *

  from (select * from prod where rownum <= 7)

 where id not in (select id from prod where rownum < 4)

强迫oracle先执行截取前7行的操作



下面是执行的结果:

Oracle rownum - 小镜子~ - 菜园子
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值