Oracle分页查询分析

目标

分页查询显示交易商信息:显示交易商ID,交易商姓名,身份证号
每页显示4条记录
显示第二页的交易商(排序的第5条到第8条数据)
按照交易商ID降序排序

解决方案

因为rownum只能使用<,<=,不能使用>,>=,所以这里只能使用嵌套子查询的方式来实现分页查询

select e2.r1, e2.firmid, e2.name, e2.certificateno
from
  (select rownum r1,e1.firmid, e1.name, e1.certificateno
  from
    (select m.firmid, m.name, m.certificateno 
    from m_firm m 
    order by m.firmid desc) e1
  where rownum <= 8) e2
where e2.r1 >= 5

在使用时,将上面的“5”换成开始条数,“8”换成结束条数

分析

1.首先将交易商表中的数据按交易商ID降序排序

select m.firmid, m.name, m.certificateno 
from m_firm m 
order by m.firmid desc

2.将第1步查出来的数据当成一张表,取别名为 e1,写在子查询中,然后查询出e1中的字段,同时显式地查询出行号rownum,并取上别名 r1,取出前8条数据(rownum<=8),由于rownum只能使用<,<=,不能使用>,>=,所以这里只能先取出前面8条数据

select rownum r1,e1.firmid, e1.name, e1.certificateno
from
    (select m.firmid, m.name, m.certificateno 
    from m_firm m 
    order by m.firmid desc) e1
where rownum <= 8

3.将第2步查询出来的数据再当成一张新表,取别名为e2,这时,e2在查询时给用到的伪列起了个别名r1,那么,就可以把这个r1当成是一个普通的列来使用,那么就可以使用>,>=来操作了。查询出e2表中,r1>=5的数据

select e2.r1, e2.firmid, e2.name, e2.certificateno
from
  (select rownum r1,e1.firmid, e1.name, e1.certificateno
  from
    (select m.firmid, m.name, m.certificateno 
    from m_firm m 
    order by m.firmid desc) e1
  where rownum <= 8) e2
where e2.r1 >= 5
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值