使用 ROW_NUMBER(),SQL Server版本要求2005及以上。

    SELECT * FROM
(
SELECT *,ROW_NUMBER() OVER(ORDER BY UserID) AS RowNum FROM TableName
) AS T WHERE RowNum > (@PageIndex-1)*@PageSize AND RowNum<=@PageIndex*@PageSize

若要带上条件筛选,那么 WHERE 语句就需要写在括号中。

    SELECT * FROM
(
SELECT *,ROW_NUMBER() OVER(ORDER BY UserID) AS RowNum FROM TableName WHERE A=B AND C=D
) AS T WHERE RowNum > (@PageIndex-1)*@PageSize AND RowNum<=@PageIndex*@PageSize

利用SQL Server新特性 OFFSET ROW FETCH NEXT ONLY,SQL Server版本要求2012及以上。

SELECT * from TableName  ORDER BY UserID OFFSET (@PageIndex-1)*@PageSize ROW FETCH NEXT @PageSize ONLY

使用Row_NUMBER() 的方式从其名称上就很好理解,就是先给原数据加上个编号(RowNum),然后在WHERE条件语句里做筛选,简单实用又很好记忆的一个分页方法。

利用SQL Server新特性的方法理解起来更直观,跳过(OFFSET)N行(ROW)后,只取接下来的(FETCH NEXT)N行。

两者的性能对比可以参考园友 hukn 写的这篇文章 SQL Server 2012使用OFFSET/FETCH NEXT分页及性能测试 。

新特性中 ORDER BY 的字段如果不具有唯一性,那么将会出现分页过程中取到重复数据的情况,不是知道这是BUG还是它特性就是如此。情况详细来源于 passingwind 写的文章 SQL 2012 新特性 offset ,fetch next only 。

T-SQL分页查询语句的更多相关文章

  1. sql分页查询语句

    有关分页 SQL 的资料很多,有的使用存储过程,有的使用游标.本人不喜欢使用游标,我觉得它耗资.效率低:使用存储过程是个不错的选择,因为存储过程是经过预编译的,执行效率高,也更灵活.先看看单条 SQL ...

  2. 不同数据库oracle mysql SQL Server DB2 infomix sybase分页查询语句

    在不同数据库中的使用的分页查询语句: 当前页:currentpage 页大小:pagesize 1. Oracle数据库 select * from (select A.*,rownum rn fro ...

  3. 防SQL注入:生成参数化的通用分页查询语句

    原文:防SQL注入:生成参数化的通用分页查询语句 前些时间看了玉开兄的“如此高效通用的分页存储过程是带有sql注入漏洞的”这篇文章,才突然想起某个项目也是使用了累似的通用分页存储过程.使用这种通用的存 ...

  4. Oracle的分页查询语句优化

    Oracle的分页查询语句基本上可以按照本文给出的格式来进行套用. (一)   分页查询格式: SELECT * FROM  ( SELECT A.*, ROWNUM RN  FROM (SELECT ...

  5. SQL逻辑查询语句执行顺序 需要重新整理

    一.SQL语句定义顺序 1 2 3 4 5 6 7 8 9 10 SELECT DISTINCT <select_list> FROM <left_table> <joi ...

  6. python 3 mysql sql逻辑查询语句执行顺序

    python 3 mysql sql逻辑查询语句执行顺序 一 .SELECT语句关键字的定义顺序 SELECT DISTINCT <select_list> FROM <left_t ...

  7. 服务器文档下载zip格式 SQL Server SQL分页查询 C#过滤html标签 EF 延时加载与死锁 在JS方法中返回多个值的三种方法(转载) IEnumerable,ICollection,IList接口问题 不吹不擂,你想要的Python面试都在这里了【315+道题】 基于mvc三层架构和ajax技术实现最简单的文件上传 事件管理

    服务器文档下载zip格式   刚好这次项目中遇到了这个东西,就来弄一下,挺简单的,但是前台调用的时候弄错了,浪费了大半天的时间,本人也是菜鸟一枚.开始吧.(MVC的) @using Rattan.Co ...

  8. mysql第四篇--SQL逻辑查询语句执行顺序

    mysql第四篇--SQL逻辑查询语句执行顺序 一.SQL语句定义顺序 SELECT DISTINCT <select_list> FROM <left_table> < ...

  9. SQL Server SQL分页查询

    SQL Server SQL分页查询的几种方式 目录 0.    序言 1.    TOP…NOT IN… 2.    ROW_NUMBER() 3.    OFFSET…FETCH 4.    执行 ...

  10. SQL分页查询结果不一致

    今天遇到了SQL分页查询结果不一致的情况,一看代码,原来是没加排序查询!!分页查询最好加排序,且以唯一性高的字段进行排序,如ID,时间等,以保持每页查询结果的准确! PS:又帮别人擦屁股!!

随机推荐

  1. TextBox 宽度无效

    TextBox 宽度设置 Width="550px"  在IE10.1011下无效 改为用  style="width:550px; height:200px;" ...

  2. [leetcode]381. Insert Delete GetRandom O(1) - Duplicates allowed常数时间插入删除取随机值

    Design a data structure that supports all following operations in average O(1) time. Note: Duplicate ...

  3. linux新安装JDK不生效的问题

    新安装了jdk,但重新连接之后仍然显示老的jdk 1. which java 2. which javac 3. rm -rf /usr/bin/java 4. rm -rf /usr/bin/jav ...

  4. 765A Neverending competitions

    A. Neverending competitions time limit per test 2 seconds memory limit per test 512 megabytes input ...

  5. 转载hibernate 的3种 状态 。。

    转自  http://huangtut.iteye.com/blog/261520  对我有帮助,所以收藏了 Hibernate三种状态的区分,以及save,update,saveOrUpdate,m ...

  6. Picard Tools

    Picard Tools - By Broad Institute http://broadinstitute.github.io/picard/command-line-overview.html ...

  7. 2018.10.22 bzoj1742: Grazing on the Run 边跑边吃草(区间dp)

    传送门 区间dp入门题. 可以想到当前吃掉的草一定是一个区间(因为经过的草一定会吃掉). 然后最后一定会停在左端点或者右端点. f[i][j][0/1]f[i][j][0/1]f[i][j][0/1] ...

  8. freeRadius与NetGear WNAP210的简使用

    1.下载安装freeRadius for win 2.2 2.配置client.cnf文件 加入 client 192.168.0.0/16{ secret=1111122222 shortname= ...

  9. python编码(三)

    python 有str object 和 unicode object 两种字符串,都可以存放字符的字节编码,但是他们是不同的type,这一点很重要,也是为什么会有encode(编码)和decode( ...

  10. 几个CSS-content的小例子

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...