`
only_xxp
  • 浏览: 13501 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

oracle分页查询

阅读更多

-------------------------问题提出----------------------------
比如有一个表test

desc test


名称                 类型
ID               NUMBER
NAME             VARCHAR2(20)
AGE              NUMBER

要选出其中按age降序排列后的2-4行






--------------------------解答----------------------------
第一步, 解决降序:

select o.*  from test o order by o.age desc



第二步, 行数小于4:

select t1.*, rownum rm 
    from (select o.*  from test o order by o.age desc) t1
    where rownum < 5


其中为rownum取别名并查询出来的原因是oracle分页时, rownum不支持大于计算, 这里相当于把rownum的值放到一个表t1中了,绕开了这个限制

第三步, 行数大于2:
有了第二步中的处理, 这里只要再简单嵌套一下就行了

select * 
    from (
          select t1.*, rownum rm 
               from (select o.*  from test o order by o.age desc) t1
               where rownum < 5
         )
    where rm > 1







--------------------------------总结----------------------------------
1. oracle分页时, 是使用rownum进行的
2. rownum 不能进行大于运算, 在进行rownum 小于运算时用别名将rownum查询出来再进行大于运算
3. 将其中2和4 转换成 firstIndex 和 lastIndex 就可以分页了


 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics