Oracle分页查询

关于rownum

我们对rownum的认识,很可能是从误区开始的,即认为它代表我们想要查询到的记录的行号,可以通过指定行号的范围,来获得指定的记录,尤其是分页记录。例如,每页100条记录,查询第2页时,指定过滤条件为:rownum > 100 and rownum < 101。
事实上,这种使用方式是错误的。如下图,查询结果为空:
rownum错误用法查询不到想要的结果
那么,这个rownum到底该如何使用呢?事实上,我们只要把握了它真正的含义,便能获知其正确的使用方法。
rownum是Oracle对返回的结果集添加的一个虚拟的行号,从1开始。也就是说,先要有结果集,才有行号。我们想要进行分页查询或指定范围查询时,必须先构造结果集。

用法示例

有了如上认知之后,那么,rownum的使用也就不言而喻了。同样是每页100条记录,我们想要查询第2页的记录时,构造如下SQL语句即可:

select * from 
  (select rownum as rw,t.* from t_jcrz t where rownum < 201) t1 
where t1.rw > 100;

即:内层指定前200条记录,外层指定行号大于100的记录,即可。

总结

先查询带行号的前若干条,再在结果集中取指定记录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值