mysql sqlserver分页_SQLServer常用分页方式
mysql的分页是基于limit关键字,oracle的分页是基于rownum行号,SQLserver的分页在下面进行研究,是基于SQLServer2012进行的测试。
0.原来的SQL的所有数据
下面的测试假设每页都是取5条数据。
1.第一种-ROW_NUMBER() OVER()方式(over函数必须有)
(1)取第一页数据
select * from(select *, ROW_NUMBER() OVER(Order by ID ) AS RowId from [mydb].[dbo].[user])asbwhere RowId between 1 and 5;
结果:
(2)取第二页数据
select * from(select *, ROW_NUMBER() OVER(Order by ID ) AS RowId from [mydb].[dbo].[user])asbwhere RowId between 6 and 10;
结果:
总结: 这种方式采用 RowId BETWEEN 当前页数-1*页大小+1 and 页数*页大小 ,而且包含起始值与结束值。
补充:这种方式的通用写法如下: 原来SQL不能带order by ,但是可以带条件。
原来SQL = select * from [mydb].[dbo].[user] where name like 'name%'
拼接分页的模板如下:
select * from(select *, ROW_NUMBER() OVER(Order by ID ) AS RowId from(
原来SQL
)ASA
)asBwhere RowId between 1 and 5;
2.第二种-offset start fetch next page rows only
(1)取第一页
select * from [mydb].[dbo].[user] order by ID offset 0 rows fetch next 5 rows only;
结果:
(2)取第二页
select * from [mydb].[dbo].[user] order by ID offset 5 rows fetch next 5 rows only;
结果:
总结:这种方式的起始值与结束值计算方式:offset 页号*页大小 rows fetch next 页大小 rows only
3.第三种: top 关键字
(1)取第一页
select top 5 * from [mydb].[dbo].[user]
where ID not in (select top 0 ID from [mydb].[dbo].[user]);
结果:
(2)取第二页
select top 5 * from [mydb].[dbo].[user]
where ID not in (select top 5 ID from [mydb].[dbo].[user]);
结果:
总结:这种方式只用改内层的 top就可以了: 内层的top后面相当于起始值,计算方式为 (页号-1)*页大小。
补充:这种分页方式的通用模板如下: 这个可以加order by和条件
原来SQL = select * from [mydb].[dbo].[user] where name like 'name%'
select top 5 * from(
原来SQL
)AS A where ID not in (select top 5 ID from [mydb].[dbo].[user]);
4.ROW_NUMBER() + top 相当于上面1和3的结合使用
(1)取第一页
select top (5) * from (select *, ROW_NUMBER() OVER(Order by ID ) AS RowId from [mydb].[dbo].[user]) as A where A.RowId>0;
结果:
(2)取第二页
select top (5) * from (select *, ROW_NUMBER() OVER(Order by ID ) AS RowId from [mydb].[dbo].[user]) as A where A.RowId>5;
结果:
总结:这种方式比较通用, 第一个 top 里面的值 相当于 页大小,第二个rowID>起始值,起始值计算方式为 (页号-1)*页大小
补充:这种分页方式的通用模板如下: 这种方式原来的SQL也不用加排序语句
原来SQL = select * from [mydb].[dbo].[user] where name like 'name%'
select top (5) * from(select *, ROW_NUMBER() OVER(Order by ID ) AS RowId from(
原来SQL
)asA
)as B where B.RowId>5;
注意:文中SQLServer的AS A这些起别名不能省略。
mysql sqlserver分页_SQLServer常用分页方式相关推荐
- c3p0对mysql配置_c3p0的常用配置方式
1:第一种方式非常简单 c3p0.driverClass=com.mysql.jdbc.Driverc3p0.jdbcUrl=jdbc:mysql://localhost:3308/databasec ...
- mysql sqlserver 拷贝_SQLServer复制搭建过程
一次偶然的机会,碰到了传说中的SQL Server数据库,要做迁移.而我本人对于SQL Server来说一窍不通.于是就按照自己对Mysql.oracle的了解来做,于是就先做复制,然后如果有延迟,就 ...
- sql server与oracle的分页,详解SQLServer和Oracle的分页查询
不管是DRP中的分页查询代码的实现还是面试题中看到的关于分页查询的考察,都给我一个提示:分页查询是重要的.当数据量大的时候是必须考虑的.之前一直没有花时间停下来好好总结这里.现在又将Oracle视频中 ...
- sqlserver实现分页的几种方式
sqlserver实现分页的几种方式 第一种:使用org.springframework.data.domain.Page来进行分页 package com.cellstrain.icell.repo ...
- 一对多分页查询mysql编写_一对多分页的SQL到底应该怎么写?
1. 前言 MySQL一对多的数据分页是非常常见的需求,比如我们要查询商品和商品的图片信息.但是很多人会在这里遇到分页的误区,得到不正确的结果.今天就来分析并解决这个问题. 2. 问题分析 我们先创建 ...
- mybatis常用分页插件,快速分页处理
在未分享整个查询分页的执行代码之前,先了解一下执行流程. 1.总体上是利用mybatis的插件拦截器,在sql执行之前拦截,为查询语句加上limit X X 2.用一个Page对象,贯穿整个执行流程, ...
- mybatis实现分页的几种方式
本文目录 借助数组进行分页 借助Sql语句进行分页 拦截器分页 RowBounds实现分页 借助数组进行分页 原理:进行数据库查询操作时,获取到数据库中所有满足条件的记录,保存在应用的临时数组中,再通 ...
- mysql 分页 不连续_mysql分页的问题
用过mysql的人肯定知道,mysql提供了原生的分页功能-----LIMIT关键字.LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数.LIMIT 接受一个或两个数字参数.参数必须是 ...
- MyBatis Plus分页插件常用配置
版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 配置详情 MyBatis Plus分页插件常用配置如下: import com.baomido ...
最新文章
- 华硕笔记本电池0%充不进电_笔记本电脑电池充不进电如何解决【解决方法】
- Redis安装异常解决办法
- ORA-01722: invalid number
- mysql 批量远程_【shell--批量远程MySQL,执行命令】-【工作总结】
- anaconda base环境_如何在最新版的Anaconda下安装Tensorflow 1.9
- 解决:The ‘Access-Control-Allow-Origin‘ header contains multiple values‘x, *‘, but only one is allowed.
- STM32F7xx —— ADC
- 传统动态代理实现计算器类日志功能
- 17. GD32F103C8T6入门教程-adc 使用教程2-dma+连续扫描方式采集数据++dma中断通知
- token会被截取吗_新手剪辑:如何截取视频的某个片段?
- 自适应滤波器设计及matlab实现,[转载]自适应滤波器设计与MATLAB
- vue加载中展示【nprogress(进度条)Lottie(动画)】
- CHD安装Hadoop
- 程序媛们,女神节快乐~
- 课堂派“互动课件”文件下载
- 虚幻蓝图实现只狼的钩索系统(2)-射线检测
- 岭南师范学院专插本计算机,2020年岭南师范学院专插本招生计划出来了,共招250人...
- 《Python编程从入门到实践》学习笔记7:用户输入和while循环
- 丁鹿学堂:前端进阶学习vue3最新教程之vue的单文件组件深入理解
- Excel技能之图表,会Excel就能碾压程序员