数据库借助RowNum筛选数据时不能使用RowNum >= n

介绍RowNum之前首先引入伪列的概念,伪列是数据库术语,物理上该列并不存在,只有当查询时才被数据库构造出来。伪列通常是自由分配的,用户无法更改。

RowNum在查询时,每执行一次都是从1开始,直到该行被输出,举个例子:

select * from  hr.employees  where RowNum > 5

查询的时候系统首先查找RowNum = 1的行,发现不符合RowNum > 5,然后进行下一次查询,下一次查询还是从RowNum = 1进行查询,一直重复,这样是不可能查到值的。

那我们要怎么样才能够取到RowNum > 5的值呢?看代码

select * from (
       (select rownum r, e.* from hr.employees e)tab1
)where r > 5;

在上面代码中我们首先通过(select rownum r, e.* from hr.employees e)tab1将原来hr.employees表中的所有的数据再加上一列r,放入到新表tab1中。在tab1中,r已经不是伪列,因此可以就通过r > 5进行筛选了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值