利用Rownum对数据按GridView 的PageSize进行划分,为分页显示做准备

 主要针对如何在将GridView中显示的数据分页显示,

   假设Table A,使用的Sql Statement如下:

   with T as (

   select rownum RN, UserID, UserName, DeptNo, DeptNoDescr from A

   )

SELECT *
  FROM ( SELECT *
                 FROM  T    WHERE RN < '本页最后一笔数据的rowNum+1' and rn > '上页最后一笔数据的rowNum' order by RN)

 

PS:

     SELECT *  FROM  T  

       WHERE RN < '本页最后一笔数据的rowNum+1' and rn > '上页最后一笔数据的rowNum'

   order by RN

 

这里有一个小小的问题, 即若table T 中的数据量特别大的时候, 内查询的分页查询就显得特别的慢! 对这样的情况我暂时也没有什么特别好的方案, 希望网友可以提出建议以供小弟参考...

 

 

 

当前的页(CurrentPage), 每页显示的记录数(PageSize);每次当User换页是只要计算出本页最后一个记录的RowNum以及上页最后一个记录的RowNum,请注意RowNum 是个很奇怪的Oracle table 属性,

    假如你要查某个table B的前10项数据,应该这样:

     select *  from (select * from B order by userID ) where RowNum <10

因为Oracle在检索的时候,会首先把数据都检索出来,然后在排序段中进行排序,假如你这样做:SELECT * from B where rowNum <'11 order by UserID,

在检索的时候,会首先把数据检索出来,也就是把B表数据都检索出来,然后再Order by排序操作。因为ROWNUM 数据是在排序前就检索出来的了,所以不能利用ROWNUM来取得排序后的前10条操作。那么应该如何操作呢。其实很简单,利用子查询,先排序,再取ROWNUM。/

  select *  from (select * from B order by userID ) where RowNum <10,

先写到这里,以后待做到分页控件都再直接用这样的Sql,每次去DB找到要显示的当前页数据

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值