前言

  • 在SqlServer中,分页查询是经常用到的查询语句,一个好的分页查询语句,不仅能将代码省略,还能提高运行效率,下面我们来探讨一下SQLServer中的分页查询语句。

  • 具体的业务逻辑是这样的,我数据库中有100条数据,我要查第40-50数据,表中有两个字段,一个字段是id,一个字段是name,其中id是不连续的,因为我删除id为44、45的记录,因为我要查数据的第40-50条记录,也就是id分别为41、42、43、46、47、…52的十条记录。那该怎么办呐?下面就是一些具体的例子。

方法一

  • 先搜出id在1-40之间的数据,紧接着搜出id不在1-40之间的数据,最后将搜出的结果取前十条。
SELECT TOP 10           --3、最后再取出前10条数据,这就是数据库中第41-50条数据(注意,id不是41-50,因为我删除了id为44、45的记录)*
FROM    dbo.a
WHERE   id NOT IN (     --2、然后搜出id不在前40之内的其它数据SELECT TOP 40   --1、按照id排序之后先搜出前40条数据id FROM    dbo.aORDER BY id )
ORDER BY id;

方法二

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

方法三、 使用Row_Number

  • 把表中的所有数据都按照一个rowNumber进行排序,然后查询rownuber大于40的前十条记录。
SELECT TOP 10*
FROM    ( SELECT    ROW_NUMBER() OVER ( ORDER BY id ) AS rownumber ,*FROM      a) A
WHERE   rownumber > 40;

方法四 OFFSET x ROW FETCH NEXT y ROWS ONLY;

  • 使用OFFSET是SQLServer2012新具有的分页功能,主要功能是从第x条数据开始共取y数据。但是其必须根再Order By 
    后面使用,相比前三种方式更加方便。例如
select id from a Order by id Offset 0 Row Fetch Next 5 Rows Only.
  • 这种方法支持SQLServer2012,但是SQLServer2008不支持,这种方法就像lamda表达式的Skip().Take()原理差不多;另外,MySQL的Limit函数也是这么用的。

小结

  • 自我感觉第四种方式非常的爽,而且是爽到家了,因为没有嵌套查询啊,少了Sql语句的嵌套,就少了“视觉上的逻辑”,但是大家一定要切记,这种方式只是适合SqlServer2012以及更高的版本,由于小编就吃过这亏。由上面的例子可以看出,SqlServer的确挺强大的,但是如果我们缺少发现“功能” 的眼睛的话,Sql Server再强大对我们来说也没有。

来源:https://blog.csdn.net/zhoukun1008/article/details/52910436

SQLServer中常用的分页查询语句相关推荐

  1. 织梦写php查询语句,织梦dedecms中常用的php查询语句(2)

    ---------- 存储过程 ------------ 1.创建无参数存储过程 语法: create procedure 过程名 as sql语句体 例题:create procedure p_st ...

  2. Oracle中分页查询语句

    Oracle分页查询语句使我们最常用的语句之一,下面就为您介绍的Oracle分页查询语句的用法,如果您对此方面感兴趣的话,不妨一看. Oracle分页查询语句基本上可以按照本文给出的格式来进行套用. ...

  3. Oracle常用语句:分页查询语句的写法

    Oracle分页查询语句使我们最常用的语句之一,下面就为您介绍的Oracle分页查询语句的用法,如果您对此方面感兴趣的话,不妨一看. Oracle分页查询语句基本上可以按照本文给出的格式来进行套用. ...

  4. Oracle、MySql、SQLServer 数据库分页查询语句

    (一).** mysql的分页查询** mysql的分页查询是最简单的,借助关键字limit即可实现查询,查询语句通式: /* * sql:可以是单表的查询语句,也可以是多表的联合查询语句* firs ...

  5. groovy怎样从sql语句中截取表名_SQL常用的基础查询语句

    数据分析过程中,我们经常可以看到提数的SQL语句,了解SQL常用的基础查询语句,是检验提数逻辑是否正确的途径之一,并且也能更方便使用SMART BI数据分析工具.今天就让小编带大家走进SQL基础查询的 ...

  6. 三种SQLServer分页查询语句笔记

    作为程序员来说,与数据库打交道是十分频繁的分页查询是一个开发者必须掌握的基本知识点,目前整理了下面三种SQLServer分页查询语句的写法,仅供参考. 一.Top Not IN 方式(查询靠前的数据较 ...

  7. mysql中如何分页查询_MySQL_mysql分页原理和高效率的mysql分页查询语句,以前我在mysql中分页都是用的 l - phpStudy...

    mysql分页原理和高效率的mysql分页查询语句 以前我在mysql中分页都是用的 limit 100000,20这样的方式,我相信你也是吧,但是要提高效率,让分页的代码效率更高一些,更快一些,那我 ...

  8. Sqlserver分页查询语句

    Sql server分页查询语句 PageSize:每页显示几条数据 pageNumber:当前页索引 T为表 注:通常pageNumber索引从零开始 select * from t where I ...

  9. JAVA中oracle分页语句,oracle分页查询语句,java得到分页查询语句的方法

    oracle分页查询语句 select * from ( select a.*, rownum rn from (select * from table_name) a where rownum &l ...

最新文章

  1. zabbix 监控mysql5.7_使用zabbix对mysql5.7主从进行监控
  2. spring boot pom配置_125 SpringCloud服务配置中心
  3. 基于 flyweight 的格式化文本处理的 Boost.Flyweight 示例
  4. spl_autoload_register 注册自己的自动加载函数(__autoload())
  5. odbc如何连oracle数据库,不安装Oracle如何连数据库(odbc驱动)
  6. 广数980tc3从u盘复制到系统_广州数控GSK980TC3车床数控系统操作手册(选)
  7. matlab 快捷键
  8. python newbie——PE No.3
  9. mysql中输出100内质数_SQL 打印 100 以内的质数
  10. 计算机磁盘检查,使用磁盘检查工具进行硬盘诊断
  11. manchi翻译中文 mi_求这一段意大利文歌词中文翻译(MiManchi)?
  12. file_get_contents() 报错failed to open stream: HTTP request failed! HTTP/1.1 505 HTTP Version Not Supp
  13. screenX、clientX、pageX三者间的区别
  14. R语言实现拟合神经网络; 神经网络包
  15. JS对象基础-怎么理解对象
  16. Windows常见扩展名介绍
  17. yarn serve yarn : 无法加载文件 D:\node\node_global\yarn.ps1,因为在此系统上禁止运行脚本。
  18. 选择VMWare虚拟机弃用VirtualBox的两个理由
  19. 如何用手机浏览电脑上的本地网站(PHP+Mysql+Apache环境)
  20. 用python可以做哪些有趣的事_可以用 Python 来干些什么有趣的事?

热门文章

  1. Bazel编译教程(基础篇)
  2. optimizer.step()代表什么意思
  3. android获取外放设备,Android 监听耳机外放设备
  4. nodejs与JAVA应对高并发的对比
  5. 概率论与数理统计:随机变量、分布律,分布函数,密度函数
  6. python批量下载数据|工具箱
  7. 离线数仓搭建_15_ADS层数据构建
  8. 什么是经销商管理系统?企业经销商管理系统优势有哪些?
  9. 2020年第十七届中国研究生数学建模竞赛C题 面向康复工程的脑信号分析和判别建模
  10. 计算机磁盘网络怎么共享,手机怎么访问电脑共享磁盘