三种SQLServer分页查询语句笔记
作为程序员来说,与数据库打交道是十分频繁的分页查询是一个开发者必须掌握的基本知识点,目前整理了下面三种SQLServer分页查询语句的写法,仅供参考。
一、Top Not IN 方式(查询靠前的数据较快)
语法格式:
select top pageSize 列名 from tablename
select top 条数 * from tablename
where Id not in (select top pageSize*(pageIndex-1) Id from tablename)
示例:
SELECT TOP 2 * FROM Users
WHERE Id NOT IN (SELECT TOP 2
Id FROM Users)
二、ROW_NUMBER() OVER()方式 (查询靠后的数据速度比上一种较快)
语法格式:
SELECT * FROM (SELECT *,
ROW_NUMBER() OVER(Order by Id ) AS RowNumber from tablename ) as b
where RowNumber between pageIndex-1*pageSize and pageIndex*pageSize
示例:
SELECT* FROM (
SELECT*,ROW_NUMBER() OVER (ORDER BY Id) AS RowNumber FROM Users ) as b
where RowNumber BETWEEN 0 and 3
三、offset fetch next方式 (速度优于前两者,限制Sql2012以上可以使用)
语法格式:
select * from tablename
order by Id offset pageIndex row fetch next pageSize row only
示例:
select * from Users order by Id offset 2 row fetch next 5 row only
四、一个比较好用的分页存储过程
create PROCEDURE GetPageData
(
@TableName varchar(30),--表名称
@IDName varchar(20),--表主键名称
@PageIndex int,--当前页数
@PageSize int--每页大小
)
AS
IF @PageIndex > 0
BEGIN
set nocount on
DECLARE @PageLowerBound int,@StartID int,@sql nvarchar(225)
SET @PageLowerBound = @PageSize * (@PageIndex-1)
IF @PageLowerBound<1
SET @PageLowerBound=1
SET ROWCOUNT @PageLowerBound
SET @sql=N'SELECT @StartID = ['+@IDName+'] FROM '+@TableName+' ORDER BY '+@IDName
exec sp_executesql @sql,N'@StartID int output',@StartID output
SET ROWCOUNT 0
SET @sql='select top '+str(@PageSize) +' * from '+@TableName+' where ['+@IDName+']>='+ str(@StartID) +' ORDER BY ['+@IDName+'] '
EXEC(@sql)
set nocount off
END
欢迎关注我的公众号(同步更新文章):DoNet技术分享平台
阅读原文
三种SQLServer分页查询语句笔记相关推荐
- Sqlserver分页查询语句
Sql server分页查询语句 PageSize:每页显示几条数据 pageNumber:当前页索引 T为表 注:通常pageNumber索引从零开始 select * from t where I ...
- 三种SQL分页查询的存储过程
--根据MAX(MIN)ID CREATE PROC [dbo].[proc_select_id] @pageindex int=1,--当前页数 @pagesize int=10,--每页大小 @t ...
- 数据库:SQLServer分页查询整理
作为程序员来说,与数据库打交道是十分频繁的分页查询是一个开发者必须掌握的基本知识点,目前整理了下面三种SQLServer分页查询语句的写法,仅供参考. 一.Top Not IN 方式(查询靠前的数据较 ...
- Oracle、MySql、SQLServer 数据库分页查询语句
(一).** mysql的分页查询** mysql的分页查询是最简单的,借助关键字limit即可实现查询,查询语句通式: /* * sql:可以是单表的查询语句,也可以是多表的联合查询语句* firs ...
- SQLServer中常用的分页查询语句
前言 在SqlServer中,分页查询是经常用到的查询语句,一个好的分页查询语句,不仅能将代码省略,还能提高运行效率,下面我们来探讨一下SQLServer中的分页查询语句. 具体的业务逻辑是这样的,我 ...
- Oracle、 Mysql 、 SQLserver 分页查询
MYSQL 分页最简单了. SELECT * FROM Account WHERE (usertype='base' or usertype='home' or usertype='salse') ...
- Hibernate通常是三种:hql查询,QBC查询和QBE查询:
一:Hibernate QBC与HQL优缺点 QBC 全称:Query By Criteria HQL 全称:hibernate Query Language HQL优点:与sql相近,可读性好,功能 ...
- mysql读取第3条记录_sql查询(三)之分页查询
分页查询这个内容基本上是个项目都会用的到的东西,面试也会问到的, 平常项目中老是百度用法,这些写博客来总结一下,省的老是百度. 现在主流的关系型数据的分页实现还是有点差别的,以oracle.mysql ...
- Oracle中分页查询语句
Oracle分页查询语句使我们最常用的语句之一,下面就为您介绍的Oracle分页查询语句的用法,如果您对此方面感兴趣的话,不妨一看. Oracle分页查询语句基本上可以按照本文给出的格式来进行套用. ...
最新文章
- C# Socket使用代理 及 Http协议、Socks5协议
- android post请求添加公共参数_Java实现通用的Get和Post请求组件
- Spring+SpringMVC项目搭建
- 8年程序员210天没找到工作,小公司老板:降薪5千,爱来不来
- 高仿科学刀论坛源码 DZ模板
- 朴素贝叶斯进行新闻主题分类,有代码和数据,可以跑通
- linux popen管道,linux进程通信之标准流管道popen
- davfs挂载与使用缺陷
- 关于AAARR模型,还停留在理论却不会用?附实例讲解
- nginx热升级实现
- 常用的sql语句集锦
- (一)GPS与基站定位
- idea中Empty tag doesn‘t work in some browsers 浏览器中一片空白,没有渲染样式,
- win10修复tcp驱动服务器,怎么解决tcpip.sys文件导致蓝屏|Win10的tcpip修复工具
- 浮点数到整数的快速转换
- Hadoop之——伪分布安装
- 国外 android 手机,Android手机浏览器(国外篇)横向对比评测
- 非递归、递归遍历二叉树!
- 汇编:寄存器的寻址方式
- python一些运维模块熟悉