方法一

假设现在有这样的一张表:

CREATE TABLE test
(id int primary key not null identity,names varchar(20)
)

然后向里面插入大约100条数据,进行分页测试
假设页数是10,现在要拿出第5页的内容,查询语句如下:
--10代表分页的大小

select top 10 *
from test
where id not in
(--40是这么计算出来的:10*(5-1)select top 40 id from test order by id
)
order by id

原理:需要拿出数据库的第5页,就是40-50条记录。首先拿出数据库中的前40条记录的id值,然后再拿出剩余部分的前10条元素

方法二

还是以上面的结果为例,采用另外的一种方法
--数据的意思和上面提及的一样

select top 10 *
from test
where id >
(select isnull(max(id),0)from (select top 40 id from test order by id) A
)
order by id

原理:先查询前40条记录,然后获得其最大id值,如果id值为null的,那么就返回0
然后查询id值大于前40条记录的最大id值的记录。这个查询有一个条件,就是id必须是int类型的。

方法三

select top 10 *
from
(select row_number() over(order by id) as rownumber,* from test
) A
where rownumber > 40

原理:先把表中的所有数据都按照一个rowNumber进行排序,然后查询rownuber大于40的前十条记录
这种方法和oracle中的一种分页方式类似,不过只支持2005版本以上的

第四种:
存储过程查询
创建存储过程

alter procedure pageDemo
@pageSize int,
@page int
AS
declare @temp int
set @temp=@pageSize*(@page - 1)
beginselect top (select @pageSize) * from test where id not in (select top (select @temp) id from test) order by id
end

执行存储过程
exec 10,5

转载于:https://www.cnblogs.com/running-mydream/p/4060313.html

SQL 分页查询的四种方法相关推荐

  1. sql oracle分页查询,【SQL】Oracle分页查询的三种方法-Oracle

    [SQL]Oracle分页查询的三种方法 采用伪列 rownum 查询前10条记录 [sql] select * from t_user t where ROWNUM <10; 按照学生ID排名 ...

  2. 分页条件查询_mongodb多条件分页查询的三种方法

    自我推荐 一.使用limit和skip进行分页查询 public List<User> pageList(int pageNum ,int pageSize){List<User&g ...

  3. Oracle中进行分页查询的三种方法

    前言: 在mysql数据库中,可以很简单的使用limit实现分页查询,不过limit不能在Oracle中使用,不过Oracle中有替代品rownum,接下来使用rownum去实现表emp(Oracle ...

  4. Oracle分页查询的两种方法

    select * from (select rownum r,s.* from book s where rownum <=4) where r>=2; select * from (se ...

  5. java连接sql server2008_java连接sql-server-2008的四种方法

    <java连接sql-server-2008的四种方法>由会员分享,可在线阅读,更多相关<java连接sql-server-2008的四种方法(11页珍藏版)>请在人人文库网上 ...

  6. SQL 分页查询语句大全即(查找第N到M条记录的方法)

    SQL 分页查询语句大全即(查找第N到M条记录的方法) 第一种方法,我的原创方法 row=2 表示分页行数 page=1 表示页码 getnum=row*page select * from  (se ...

  7. Spark SQL DataFrame新增一列的四种方法

    Spark SQL DataFrame新增一列的四种方法 方法一:利用createDataFrame方法,新增列的过程包含在构建rdd和schema中 方法二:利用withColumn方法,新增列的过 ...

  8. 台式机计算机型号怎么查,电脑配置怎么查询?笔记本台式机查询电脑配置的四种方法...

    电脑配置怎么查询?虽然说现在网络非常的发达,但是并不是每个人都是电脑专家,还有一些不怎么接触电脑的小白用户,对于电脑配置怎么查询并不了解.今天智能手机网就为大家带来了电脑配置查询的具体方法,一起来瞧一 ...

  9. 使用Spring Security3的四种方法概述

    使用Spring Security3的四种方法概述 那么在Spring Security3的使用中,有4种方法: 一种是全部利用配置文件,将用户.权限.资源(url)硬编码在xml文件中,已经实现过, ...

最新文章

  1. git客户端基本操作
  2. C#模拟鼠标键盘控制其他窗口(一)
  3. 000-SQL Server
  4. python人头识别_python+opencv实现人头检测
  5. java里顺序表怎么判断是否满_2、顺序表的实现(java代码)
  6. Java递归实现二分法
  7. wxWidgets:进程间通信
  8. 大数据主题分享第三期 | 基于ELK的亿级实时日志分析平台实践
  9. require_once的用法
  10. 论文阅读 - Beat Tracking by Dynamic Programming
  11. 数论 —— 线性同余方程组与中国剩余定理
  12. 在CMakeLists.txt文件中包含Eigen
  13. 【MDVRP】基于matlab水滴算法求解多仓库车辆路径规划问题【含Matlab源码 1310期】
  14. Hypermesh-优化案例学习笔记-cclip
  15. 从苏宁电器到卡巴斯基第36篇:我与卡巴斯基的邂逅(上)
  16. IDC发布中国AI云服务市场报告 百度智能云排名第一
  17. 程序员的奋斗史(七)——沟通交流、表达能力的重要性
  18. linux命令 - tail:查看文件最后几行的命令
  19. C#工控上位机实例_南京物流仓库【仓库物流】_智能云仓储库存wms管理分配货_电子标签价签拣货系统_工控erp上位机软件开发设计...
  20. rke 部署的时候报错:Failed to set up SSH tunneling for host

热门文章

  1. 我的docker随笔13:docker源码编译进阶篇
  2. YUV格式学习:YUV422P、YV16、NV16、NV61格式转换成RGB24
  3. u-boot移植随笔:u-boot启动流程简图
  4. vue-cli目录结构介绍
  5. 关于/etc/shadow 文件的九段内容的详细解释
  6. Oracle数据库报错【ORA-12514 】TNS 监听程序当前无法识别连接描述符中请求服务
  7. mysql安装mac 压缩包_MySQL8.0安装详解(图文版)
  8. db2存储过程手动执行没有问题_轻松解决DB2创建存储过程时遇到的错误
  9. 【linux】Permission denied (publickey) SSH用户名密码登录报错
  10. 【Flink】Flink 1.14 版本 新特性 Barrier 在流经算子做 checkpoint Barrier跳过 unaligned checkpoint