• 王帆   2014/11/23 10:45:00
  • oracle如何实现分页 效果?
  • 关键字: 分页 存储过程 oracle
  • 问题:oracle如何实现分页 效果?

    解决方案:

    第一种:

    1. select * from a_matrix_navigation_map  
    2. where rowid not in(select rowid from a_matrix_navigation_map where rownum<=0) and rownum<=10  

    第二种:

    1. SELECT * FROM  
    2. (  
    3. SELECT A.*, rownum r  
    4. FROM  
    5. (  
    6. SELECT *  
    7. FROM a_matrix_navigation_map  
    8.   
    9. ) A  
    10. WHERE rownum <= 10  
    11. ) B  
    12. WHERE r > 0  

    第三种

    1. SELECT * FROM table WHERE ROWNUM<101;   
    2. minus   
    3. SELECT * FROM table WHERE ROWNUM<91; 


    第四种

    可以用变通一点的办法,我给个示例:

    1. sql = "select a_id,a_title,a_author,aID,a_time,a_readtime,sID from article order by a_id";   
    2.   
    3. int a;   
    4. while (rs.next()) {   
    5. a++;   
    6. if (a=ipage+spage)continue;   
    7. ...   
    8. }  

    其中第二种是非常成熟的分页
    我的实例~ 即可实现 类似limit 功能

    1. $bandanspager="select * from abc t2,abc1 t1 where t1.id=t2.id group by t1.id";  
    2. $sql=" SELECT * FROM 
    3. ( 
    4. SELECT A.*, rownum r 
    5. FROM 
    6. ( ".$bandanspager.") A  
    7. WHERE rownum <= 10  
    8. ) B  
    9. WHERE r > 0  

    Oracle不支持类似于 MySQL 中的 limit. 但你还是可以rownum来限制返回的结果集的行数.

    如果你只希望返回前十行纪录,你可以这样写:

    SELECT * FROM table WHERE ROWNUM<10;

    但是下面的语句是不对的:

    SELECT * FROM table WHERE ROWNUM>90 AND ROWNUM<100;

    这是因为 Oracle 认为这个条件不成立,所以没有返回。
    你应该这样写:

    1. SELECT * FROM table WHERE ROWNUM<101;   
    2. minus   
    3. SELECT * FROM table WHERE ROWNUM<91;  


    其他数据库模拟实现mysql的limit语法

    假如我有个user表,我想查询符合某些条件的第50个用户开始的10个用户,且不能使用id号between and那样查询,应该怎么写SQL语句?

    在mysql数据库中有limit,offset语句可以方便的实现,那么在SQL server中呢?SQL Server是否支持limit和offset语句呢?

    1. select top 10 * from  
    2. (select top 60 * from [userorder by userid) aa  
    3. order by userid desc  

    oracle,如果想从表中取出按照某字段排序前M到N条记录

    下面的ORACLE语句是最好的:

    1. SQL> select ID from  
    2. (  
    3. select ID , rownum as con from  
    4. (  
    5. select ID from TestSort order by ID  
    6. )  
    7. where rownum <= 3 /*N值*/  
    8. )  
    9. where con >= 2; /*M 值*/  
    10. ID  
    11. ----------  
    12. 2  
    13. 3  


     


大家的回答
  • 还没有人回答这个问题哦,亲,快来帮帮TA吧
  •   我来回答
  • 注册用户登录后才能发表评论,请 登录注册
  • 请您注意

    ·自觉遵守:爱国、守法、自律、真实、文明的原则

    ·尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法规

    ·严禁发表危害国家安全,破坏民族团结、国家宗教政策和社会稳定,含侮辱、诽谤、教唆、淫秽等内容的作品

    ·承担一切因您的行为而直接或间接导致的民事或刑事法律责任

    ·您在编程中国社区新闻评论发表的作品,本网站有权在网站内保留、转载、引用或者删除

    ·参与本评论即表明您已经阅读并接受上述条款

  • 相关话题
  • 暂无相关话题哦