SQL Server两种分页的存储过程使用介绍
由于现在很多的企业招聘的笔试都会让来招聘的写一个分页的存储过程,有的企业甚至要求应聘者用两种方式实现分页,如果没有在实际项目中使用过分页,那么很多的应聘者都会出现一定的问题,下面介绍两种分页的方法。
一、 以学生表为例,在数据库中有一个Student表,字段有StudentNo, ,LoginPwd, StudentName,Sex,ClassId,Phone,Address,BornDate,Email,isDel
要求:查询学生的信息,每页显示5条记录
二、第一种方式分页:利用子查询 not in
例如:
第一页
select top 5 * from Student
第二页: 查询前10条中不在前5条的记录,那么就是6-10,也就是第二页
select top 5 * from Student where StudentNo not in(select top 10 Studentno from Student)
同理可以得到第三页、、、、、、、
这种方式相信大家都能明白,这种分页的存储过程写法就不多做介绍,重点介绍下面那种分页方法。
三、第二种方式分页:利用ROW_NUMBER()这个自带的函数
因为自05之后,提供一个专门用于分页的函数,那就是ROW_NUMBER()这个函数,分页的基本语法:ROW_NUMBER() over(排序字段):可以根据指定的字段排序,对排序之后的结果集的每一行添加一个不间断的行号,相当于连续的id值一样,
例如sql语句:select ROW_NUMBER() over(order by studentno) id, * from Student 那么结果集可以看到:
那么我们可以看到id值是连续的,所有接下来的存储过程写起来就比较简单了。
注意:我们必须为这个结果集命一个新名字,比如我们命名为temp,那么分页存储过程可以写出:
if exists( select * from sysobjects where name= usp_getPageData )
drop proc usp_getPageData 如果存在名字为usp_getPageData的存储过程则删除
go
create proc usp_getPageData 创建名字usp_getPageData存储过程
@toPage int=0 output, 总页数
@pageIndex int =1 , 默认显示第一页
@pageCount int =5 默认每页的记录为5条
as
select temp.StudentNo,temp.LoginPwd,temp.StudentName,temp.Sex,temp.ClassId,temp.Phone,temp.Address,temp.BornDate,temp.Email,temp.isDel from
(select ROW_NUMBER() over (Order by studentno) id,* from Student) temp
where id (@pageIndex-1)*@pageCount and id =@pageIndex*@pageCount
set @toPage=ceiling((select COUNT(*) from Student)*1.0/@pageCount) 使用ceiling函数算出总页数
go
说明因为在实际的项目的开发中,经常要显示总页数给用户看的,所有这里的存储过程增加了一个toPage参数,由于它是要输出给用户看的,所有参数类型定义为output,并用set进行赋值。
以上是对两种分页方法的介绍,如果有任何疑问或不懂的可以留言给我。
我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题
本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 SQL Server两种分页的存储过程使用介绍
相关文章
- SQL开发知识:SQL Server表和索引存储结构
- Sql存储过程游标循环的用法及sql如何使用cursor写一个简单的循环
- SQL SERVER备份数据库存储过程的方法
- 五种SQL Server分页存储过程的方法及性能比较
- Sql Server中通过sql命令获取cpu占用及产生锁的sql
- SQL Server如何通过SQL语句直接操作另一台服务器上的SQL SERVER的数据
- 分享Sql Server 存储过程使用方法
- SQL SERVER 表与表之间 字段一对多sql语句写法
- SQL Server存储过程入门教程:快速了解存储过程的基本知识(sqlserver存储过程教程)
- SQL Server中的图片存储技术简介(sqlserver图片存储)
- 小型SQL Server:实现数据存储的最佳选择(小型的sqlserver)
- 京东用SQL Server存储大数据实现极致性能(京东用sqlserver)
- SQL Server:高效的信息存储与管理利器(sqlserver的特点)
- 途SQL Server:提供高效可靠的数据存储解决方案(sqlserver用)
- 存储SQL Server:图像存储专家(sqlserver是图片)
- 使用SQL Server存储和访问图片(sqlserver放图片)
- 存储SQL Server小写存储的核心优势(sqlserver 小写)
- SQL Server 存储文件:提升数据资产管理能力(sqlserver存文件)
- SQL Server存储图像的专业知识(sqlserver存图片)
- ariadbSQL Server 非 Mariadb无法存储(sqlserver存不m)
- SQL Server架构探索:助力数据存储自动化(sqlserver 架构)
- SQL Server列存储技术——提高存储效率的利器(sqlserver列存储)
- SQL Server实现二叉树结构存储数据(sqlserver二叉树)
- SQL Server表:最佳数据存储方式(表sqlserver)