Oracle中使用SQL进行分页的语句、方法,简单易用,呵呵……

     看了不少分页方面的文章,感觉还是直接使用SQL来的简单直接,就简单研究了一下……
不过,鄙人Oracle数据库方面的知识实在有限,有什么不对之处还请多多指教,效率嘛,不知道怎么测,俺只管好用就行了……
     小经验:
     select * from tablename where rownum>10 and rownum<20
     像这样的语句是不对的,oracle认为条件不成立,至于为什么这么弱智,俺也不知道……
     rownum只可以用<=来操作,不可以用>=
     select * from tablename where rownum<20
     minus
     select * from tablename where rownum<10
     这样也能达到分页的目的,不过不支持LONG字段,所以还是用下面的吧……
--------------------------------------------------------------------------------------
方法1,据说效率较高
select * from (select rownum idd,t.* from (select * from gsdtlongtest order by id desc) t
where rownum<20) tt where tt.idd>10

select * from (select rownum idd,t.* from (select * from gsdtlongtest order by id desc) t
where rownum<end) tt where tt.idd>start


curpage 当前页
pagenum 每页显示条数

start=(curpage-1)*pagenum
end=start+pagenum+1

最后一页如果不足pagenum无所谓
--------------------------------------------------------------------------------------
方法2(43条记录,每页20条,第2页):
select * from (select * from gsdtlongtest where rownum<=23)
where id not in(select id from gsdtlongtest where rownum<=3) order by id desc

select * from (select * from gsdtlongtest where rownum<=start)
where id not in(select id from gsdtlongtest where rownum<=end) order by id desc

 

start=total-(curpage-1)*pagenum
end=start-pagenum+1

注意:为了减少子查询数,直接按照默认的数据库记录顺序进行分页计算。主键id顺序增加,最新纪录为表中最后一条记录。效率不知道怎么样……

---------------------------------------------------------------------------------------

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值