三种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技术分享平台

阅读原文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/272781.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sqlserver2008r2安装

转载于:https://www.cnblogs.com/sprinng/p/4932739.html

JQuery七个常犯的错误

1、 乱用选择器JQuery选择器调用代价很大&#xff0c;反复调用效率更低。应采用缓存对象的方法或采用链式调用的方式。//错误的写法$("#button").click(function(){ $(#list li).addClass(strong); $(#list li).css(color,red);});//正确的写法$("#button…

java流读取xml_使用FileInputStream(用于Java)读取XML文件?

这是交易.对于我的项目,我必须使用Java和XStream对随机树进行序列化和反序列化.我的老师制作了Tree / RandomTree算法,所以我不必担心.我不知道该怎么做是这样的&#xff1a;我使用FileInputStream来读/写我序列化和反序列化的xml文件,但是当我反序列化时,我不知道用于读取文件…

后台寻路系统的大体思路与流程

总的思路就是: 1, 通过前台unity的navigation的的接口: 获得顶点和三角形集合数据 2, 将前台的mesh数据转换成标准的obj格式数据 3. 强obj mesh数据经过一系列转换和优化, 生成recastnavigation插件寻路模块detour需要的导航数据 故制作了工具MakeNavmeshData生成detour需要的…

关于WCF、WebAPI、WCFREST、WebService之间的区别总结

在.net平台下&#xff0c;有大量的技术让你创建一个HTTP服务&#xff0c;像Web Service&#xff0c;WCF&#xff0c;现在又出了Web API。在.net平台下&#xff0c;你有很多的选择来构建一个HTTP Services。我分享一下我对Web Service、WCF以及Web API的看法。一、Web Service1、…

java 程序是由什么组成的 java_从零开始的JAVA -2. java程序的构成及命名规则

1.public classYD2.{3. public static voidmain (string args[ ])4. {5. System.out.println("我是一名学习JAVA的新人&#xff01;");6. }7.}第一行 public 代表这是一个公共类(可省略) class 是声明一个类&#xff0c;在他后面的YD 就是类名(类名可以随意写)第二行…

你应该知道的jQuery技巧【收藏】

jQuery的存在&#xff0c;让学习前端开发的人感到前端越来越容易入门了&#xff0c;用简单的几行代码就可以实现需求&#xff0c;但是&#xff0c;你真的会用jQuery么&#xff0c;当代码运行 后无法看到自己预期的效果&#xff0c;是不是觉得jQuery出了问题&#xff0c;其实&am…

LINQ表达式用法整理

收集一些Linq表达式中的一些比较常用的写法&#xff0c;希望能给大家工作当中带来一些便利。1. Where子句条件过滤结果集型&#xff08;集合数据使用这种&#xff0c;譬如数组、列表数据&#xff0c;同样适用于Datatable等多列数据集&#xff09;类SQL语句的写法&#xff0c;对…

Eclipse is running in a JRE, but a JDK is required 解决方法(转)

转自&#xff1a;http://comeonbabye.iteye.com/blog/1186239 安装Maven后每次启动出现警告信息: Eclipse is running in a JRE, but a JDK is requiredSome Maven plugins may not work when importing projects or updating source folders. 分两步解决问题: 1. 检查Eclipse正…

java线程归并排序_Java-归并排序 - FeanLau的个人空间 - OSCHINA - 中文开源技术交流社区...

public class MergeSort {static int number0;public static void main(String[] args) {int[] a {26, 5, 98, 108, 28, 99, 100, 56, 34, 1 };printArray("排序前&#xff1a;",a);MergeSort(a);printArray("排序后&#xff1a;",a);}private static voi…

收集一些优秀的DoNet开源项目

Paste_Image.pngJson.NEThttp://json.codeplex.com/ Json.Net是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Net环境下使用Json更加简单。通过Linq To JSON可以快速的读写Json&#xff0c;通过JsonSerializer可以序列化你的.Net对象。让你轻松实现.Net中所有类型(对象,基…

git初探

1 Linux下Git和GitHub环境的搭建 第一步&#xff1a; 安装Git&#xff0c;使用命令 “sudo apt-get install git” 第二步&#xff1a; 到GitHub上创建GitHub帐号 第三步&#xff1a; 生成ssh key&#xff0c;使用命令 “ssh-keygen -t rsa -C "your_emailyouremail.com&q…

java编程思想 初始化_《java编程思想》_第五章_初始化与清理

初始化和清理是涉及安全的两个问题&#xff0c;java中采用了构造器&#xff0c;并额外提供了“垃圾回收器”&#xff0c;对于不再使用的内存资源&#xff0c;垃圾回收器能自动将其释放。一、用构造器确保初始化java中&#xff0c;通过提供构造器&#xff0c;类的设计者可以确保…

OkHttp 上手

OkHttp 上手 优点 快、节省带宽。支持 HTTP&#xff0f;2 和 SPDY。HTTP&#xff0f;2 和 SPDY 允许对同一个主机的所有请求&#xff0c;使用一个 socket。如果不支持 SPDY 的话&#xff0c;可以用连接池减少请求等待时间。GZIP 缩小传输大小。缓存响应&#xff08;response ca…

关于Net开发中一些SQLServer性能优化的建议

一、 ExecuteNonQuery和ExecuteScalar 对数据的更新不需要返回结果集&#xff0c;建议使用ExecuteNonQuery。由于不返回结果集可省掉网络数据传输。它仅仅返回受影响的行数。如果只需更新数据用ExecuteNonQuery性能的开销比较小。 ExecuteScalar它只返回结果集中第一行的第一列…

jstl mysql_java – jsp jstl sql与mysql中的奇怪行为

在mysql中我有一个存储过程,其中包含一个sql&#xff1a;select firstname as i_firstname , lastname as i_lastname from roleuserwhere user_id uid ;我使用jstl代码来获取值&#xff1a; –call sp_select_username(?);${rows.i_firstname} ${rows.i_lastname}但是这个代…

C# 哈希表(Hashtable)用法笔记

一、什么是Hashtable&#xff1f;Hashtable 类代表了一系列基于键的哈希代码组织起来的键/值对。它使用键来访问集合中的元素。当您使用键访问元素时&#xff0c;则使用哈希表&#xff0c;而且您可以识别一个有用的键值。哈希表中的每一项都有一个键/值对。键用于访问集合中的项…

转: Div与table的区别

1&#xff1a;速度和加载方式方面的区别 div 和 table 的差异不是速度&#xff0c;而是加载方式&#xff0c;速度只能是指网络速度&#xff0c;如果速度足够快&#xff0c;是没有差异的&#xff1a; div 的加载方式是即读即加载&#xff0c;遇到 <div> 没有遇到 </div…

你的工作是为了你自己!

1、无论为谁打工&#xff0c;要为自己学东西&#xff0c;客观为公司创造价值。我自己当年&#xff0c;无论我在方正给国内企业工作&#xff0c;还是我在雅虎给外国人工作&#xff0c;我都跟别人最大的不一样&#xff0c;我从来不觉得我在给他们打工&#xff0c;我真的可能是很有…

java 无法注入service_SpringBoot集成shiro,MyRealm中无法@Autowired注入Service的问题

网上说了很多诸如是Spring加载顺序&#xff0c;shiroFilter在Spring自动装配bean之前的问题&#xff0c;其实也有可能忽略如下低级错误。在ShiroConfiguration中要使用Bean在ApplicationContext注入MyRealm&#xff0c;不能直接new对象。道理和Controller中调用Service一样&…