SQL分页

mysql分页:

从0开始计数

    第0页:

    select * from student limit 0,10;

    第1页:

    select * from student limit 10,10;

    第2页:

    select * from student limit 20,10;

    第n页:

    select * from student  limit  页数*页面大小,页面大小;

oracle分页:

从1开始计数:

    了解oracle分页前,我们要了解oracle中的rownum的用法。   

    rownum伪列,将一组数据从1开始计数,直到最后一位。但是rownum只能查询小于其本身的数据,不能查询大于其本身的数据。

    第n页:

    select * from 
   (
        select  rownum  r, t.* 
       from
       (select s.* from student s order by sno asc)  t 
        where r<=n*10
   )
      where r>=(n-1)*10+1  and  r<=n*10;

SQLServer分页

   SQLServer2003之后支持

    top:

    select  top  页面大小  *  from student where id not in
    (
        select top (页数-1) * 页面大小  id from student order by sno asc
    )

    

   SQLServer2005之后支持

    row_number:   

    SQLServer中的row_number和oracle中的rownum相似,但是要对一个列进行预处理操作

    第n页:

    select * from
    (
        select  row_number()  over (sno order by sno asc)  as  r, t.*  from  student  t
        where  r<=n*10
    )
    where r>=(n-1)*10+1  and  r<=n*10;

    SQLServer2012之后支持

       offset  fetch  next   rows  only:

        select * from student order by sno
        offset (页数-1)*页面大小+1  fetch  next  页面大小 rows only;

总结

SQLServer中的row_number分页sql与Oracle分页sql的区别:

    1、变量名称不同:
            Oracle的名称为rownum
            SQLServer的名称为row_number()

    2、Oracle需要排序(为了排序,单独写了一个子程序)
          SQLServer可以省略该排序的子查询,因为SQLServer中可以通过over()直接排序

    

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • ORACLE自学教程 --create tabletestone ( id number, --序号usernam...
    落叶寂聊阅读 1,293评论 0赞 0
  • 一. Java基础部分.................................................
    wy_sure阅读 4,124评论 0赞 11
  • SELECTTOP 页大小 * FROM ( SELECT ROW_NUMBER() OVER (ORDERB...
    王纪山阅读 407评论 0赞 1
  • 背景 系统中使用了jqgrid的展示,现在要处理10w+的数据量 现状 使用了全查询的,查询到了10w+的数据放到...
    杨晶磊阅读 679评论 0赞 0
  • 我们知道数据库的存储量可以说是非常大的,百万条数据查询可能近10秒,所以分页功能必不可少。 需求:请将员工按照薪水...
    iOS_我更专业阅读 3,117评论 0赞 2

友情链接更多精彩内容