网站首页> 博客> Oracle、MySQL和SQL Server的分页查询语句

Oracle、MySQL和SQL Server的分页查询语句

好文 2550
格式化记忆
收藏

    

    由于在工作中多用的是Oracle或者Mysql数据库,所以对SQLsever不太了解,由于OneManage的用户们强烈要求加上SQLserver数据库版本,我抽时间看了下,除了

数据库连接不一样之外,分页也是有很大的不同,在动工之前列出这三种数据库分页的不同之处供大家参考。

    

假设当前是第PageNo页,每页有PageSize条记录,现在分别用Mysql、Oracle和SQL Server分页查询student表。

1、Mysql的分页查询:


1 SELECT2     *
3 FROM
4     student
5 LIMIT (PageNo - 1) * PageSize,PageSize;

理解:(Limit n,m)  =>从第n行开始取m条记录,n从0开始算。

2、Oracel的分页查询:

复制代码

 1 SELECT 
 2     * 
 3 FROM 
 4     ( 
 5         SELECT 
 6             ROWNUM rn ,* 
 7         FROM 
 8             student 
 9         WHERE
 10             Rownum <= pageNo * pageSize
 11     )
 12 WHERE
 13     rn > (pageNo - 1) * pageSize

复制代码

理解:假设pageNo = 1,pageSize = 10,先从student表取出行号小于等于10的记录,然后再从这些记录取出rn大于0的记录,从而达到分页目的。ROWNUM从1开始。

3、SQL Server分页查询:

复制代码

 1 SELECT 
 2     TOP PageSize * 
 3 FROM 
 4     ( 
 5         SELECT 
 6             ROW_NUMBER () OVER (ORDER BY id ASC) RowNumber ,* 
 7         FROM 
 8             student 
 9     ) A
 10 WHERE
 11     A.RowNumber > (PageNo - 1) * PageSize

复制代码

 理解:假设pageNo = 1,pageSize = 10,先按照student表的id升序排序,rownumber作为行号,然后再取出从第1行开始的10条记录。

  分页查询有的数据库可能有几种方式,这里写的可能也不是效率最高的查询方式,但这是我用的最顺手的分页查询,如果有兴趣也可以对其他的分页查询的方式研究一下。


  • 没有任何评论
个评论
格式化记忆

格式化记忆 (铂金)

96286金币 (276)粉丝 (31)源码

一切皆有可能!!!

 

加入微信群,不定期分享源码和经验
签到活跃榜 连续签到送额外金币
最新博客
校园跑腿系统外卖系统软件平台大学生创业平台搭建 667
壹脉销客智能名片CRM系统小程序可二开源码交付部署 654
为啥没搞了 1025
Nginx 的 5 大应用场景,太实用了! 1248
CentOS 8-stream 安装Postgresql 详细教程 1492
JAVA智慧校园管理系统小程序源码 电子班牌 Sass 模式 1233
Java智慧校园系统源码 智慧校园源码 智慧学校源码 智慧校园管理系统源码 小程序+电子班牌 982
Java智慧校园系统源码 智慧校园源码 智慧学校源码 智慧校园管理系统源码 小程序+电子班牌 984
致远OA权限 1676
发博客会有金币吗 1013