1.根据ROWID来分
select * from t_xiaoxi where rowid in(select rid from (select rownum rn,rid from(select rowid rid,cid from
t_xiaoxi  order by cid desc) where rownum<10000) where rn>9980) order by cid desc;
2.按分析函数来分
select * from (select t.*,row_number() over(order by cid desc) rk from t_xiaoxi t) where rk<10000 and rk>9980;
3.按ROWNUM来分
select * from(select t.*,rownum rn from(select * from t_xiaoxi order by cid desc) t where rownum<10000) where
rn>9980;

解决方案 »

  1.   

    在网上看到的都是显示从某一个ID到某一个ID,
    转化一下就可以实现你的需求了
    比如 传入第三页 每页20条,转化下不就是取出数据41到60吗?
      

  2.   

    搜一下,很多的
    将rownum换算成页码和每页显示的数量而已
    例如每页50条,第5页的查询,rownum的条件就是
    rownum<=50*5 ...  rn>50*(5-1)
      

  3.   

    假设传入的页数为P_PAGE,行数为P_ROWS,则取值范围是(P_PAGE-1)*P_ROWS+1到P_PAGE*P_ROWS
    1楼的方法可以如下转化
    1.根据ROWID来分
    select * from t_xiaoxi where rowid in(select rid from (select rownum rn,rid from(select rowid rid,cid from
    t_xiaoxi  order by cid desc) where rownum<=P_PAGE*P_ROWS) where rn>=(P_PAGE-1)*P_ROWS+1) order by cid desc;
    2.按分析函数来分
    select * from (select t.*,row_number() over(order by cid desc) rk from t_xiaoxi t) where rk<=P_PAGE*P_ROWS and rk>=(P_PAGE-1)*P_ROWS+1);
    3.按ROWNUM来分
    select * from(select t.*,rownum rn from(select * from t_xiaoxi order by cid desc) t where rownum<=P_PAGE*P_ROWS) where rn>=(P_PAGE-1)*P_ROWS+1);