oracle 分页查询

SQL> select * from scott.emp where rowid in(
              select rid from (
                  select rownum rn,rid from (
                      select rowid rid,empno from scott.emp order by empno desc)

                  where rownum<10)
              where rn > 6)

          order by empno desc;

请复制下面代码,可直接执行,和上面是一样的

select * from scott.emp where rowid in(select rid from (select rownum rn,rid from (select rowid rid,empno from scott.emp order by empno desc) where rownum<10) where rn > 6)  order by empno desc;

 

 

不懂的再看这个

oracle的分页是通过rownum实现的。

  rownum是一个伪列,是oracle系统自动为查询返回结果的每行分配的编号,第一行为1,第二行为2,以此类推。。。。

  一个oracle分页,至少要包含三层(除非不用order by,暂时可以用2层实现),模板为

  select temp2.* from(

  select rownum num,temp1.* from(

  SQL查询

  ) temp1 where rownum<=n1

  )temp2   where temp2.num>n2

  例如:值返回查询结果第11条到20条着10条的信息的SQL如下:

  select temp2.*

  from(

  select rownum num,temp1.*

  from(

  select tt.title_id,tt.name

  from t_title tt

  where tt.name like '%美%'

  order by tt.sort_seqs asc,tt.title_Id desc) temp1

  where rownum<=20

  )temp2

  where temp2.num>10

  分析:

  1.首先是一个正常的查询语句(包含order by)

  select tt.title_id,tt.name

  from t_title tt

  where tt.name like '%美%'

  order by tt.sort_seqs asc,tt.title_Id desc

  这个和正常的SQL语句没有任何的区别

  2.添加rownum字段,显示列数

  select rownum num,temp1.*

  from(

  select tt.title_id,tt.name

  from t_title tt

  where tt.name like '%美%'

  order by tt.sort_seqs asc,tt.title_Id desc) temp1

  where rownum<=20

  我们添加了rownum 显示字段,这时候就会会每行添加一个行数的编号;并且只返回20条之前的数据(包含20条)

  3.截取第10条到20条的数据,SQL就是:

        select temp2.*

  from(

  select rownum num,temp1.*

  from(

  select tt.title_id,tt.name

  from t_title tt

  where tt.name like '%美%'

  order by tt.sort_seqs asc,tt.title_Id desc) temp1

  where rownum<=20

  )temp2

  where temp2.num>10

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值