Sqlserver的SQL语句实现分页查询

在应用程序的开发中,如果数据库中的数据量过于的庞大,则需要针对查询数据做分页处理,取出对应分页中的数据,在Sqlserver分页的语句写法中,有两种比较常用,一种是数据表中含有自增量Id的情况,可以根据Id的大小顺序进行分页,另一种是数据库中不存在Int类型的Id的情况,此时就需要通过Row_Number函数来实现分页。

(1)数据表中存在自增量Id的情况

假设我们查询的表名称为Student,包含的字段有:Id(Id号,自增变量)、Name(姓名)、BirthDay(出生日期)。按出生日期从早到晚排序,获取排序后第31到60个学生的信息,语句可以使用Select Top的方式书写。具体如下:

Select Top 30 * FROM Student Where Id Not In (Select Top 30 FROM Student Order By BirthDay) Order By BirthDay

如果是获取第91到120排位的学生的话,则是下列语句。

Select Top 30 * FROM Student Where Id Not In (Select Top 90 FROM Student Order By BirthDay) Order By BirthDay

(2)数据表中不存在Id的情况

此种情况不可能再使用top来排序了,可使用row_Number进行排序后再筛选对应的值。

更改上述的Student表的结构为:StudentCode(文本类型,非数字)、Name(姓名)、BirthDay(出生日期)。按出生日期从早到晚排序,获取排序后第31到60个学生的信息,此时的SQL语句为:

With tempTb AS
(
Select ROW_NUMBER() OVER(order by BirthDay ASC) AS RowNumber, FROM Student
)
Select
FROM tempTb Where RowNumber>30 AND RowNumber<=60

在临时表tempTb中使用了ROW_NUMBER() OVER来获取排序后的序号,Over里面为排序的规则。

备注:此文章最早发表于博主个人站,原文链接Sqlserver的SQL语句实现分页查询_IT技术小趣屋

原文地址:https://blog.51cto.com/6455350/2371919

时间: 2024-08-24 11:01:42

Sqlserver的SQL语句实现分页查询的相关文章

oracle,mysql,SqlServer三种数据库的分页查询总结

MySql: MySQL数据库实现分页比较简单,提供了 LIMIT函数.一般只需要直接写到sql语句后面就行了. LIMIT子 句可以用来限制由SELECT语句返回过来的数据数量,它有一个或两个参数,如果给出两个参数, 第一个参数指定返回的第一行在所有数据中的位置,从0开始(注意不是1),第二个参数指定最多返回行数.例如: select * from table    LIMIT 10;    #返回前10行 select * from table    LIMIT 0,10; #返回前10行

SQL语句技巧:查询存在一个表而不在另一个表中的数据记录

原文:SQL语句技巧:查询存在一个表而不在另一个表中的数据记录 方法一(仅适用单个字段)使用 not in ,容易理解,效率低 select A.ID from A where A.ID not in (select ID from B) 方法二(适用多个字段匹配)使用 left join...on... , "B.ID isnull" 表示左连接之后在B.ID 字段为 null的记录 select A.ID from A left join B on A.ID=B.ID where

在Excel中使用SQL语句实现精确查询? (2012-08-21 00:00:00)转载▼

在Excel中使用SQL语句实现精确查询 (2012-08-21 00:00:00) 转载▼ 标签: 郑来轶 数据分析 excel sql 数据查询 匹配 分类: 07.MSoffice 今天在微博上看到@数据分析精选 分享的一篇文章,是关于<在Excel中使用SQL语句实现精确查询>,觉得非常受用,分享给大家. 微博上有人回复评论说直接用vlookup.或者导入数据库进行查询处理就好了,岂不是更高效.更灵活:其实给人的第一直观感觉是这样子的,但是我们多想一步,这篇文章的应用场景.使用前提条件

[转]在Excel中使用SQL语句实现精确查询

本文转自:http://blog.sina.com.cn/s/blog_5fc375650102e1g5.html 今天在微博上看到@数据分析精选 分享的一篇文章,是关于<在Excel中使用SQL语句实现精确查询>,觉得非常受用,分享给大家. 微博上有人回复评论说直接用vlookup.或者导入数据库进行查询处理就好了,岂不是更高效.更灵活:其实给人的第一直观感觉是这样子的,但是我们多想一步,这篇文章的应用场景.使用前提条件是什么?我想到的有以下几个方面:①数据量不是很大的时候:②数据结构导入数

mongodb 跟踪SQL语句及慢查询收集

有个需求:跟踪mongodb的SQL语句及慢查询收集 第一步:通过mongodb自带函数可以查看在一段时间内DML语句的运行次数. 在bin目录下面运行  ./mongostat -port 端口号  则可以看到下面的数据 它的输出有以下几列: inserts/s 每秒插入次数 query/s 每秒查询次数 update/s 每秒更新次数 delete/s 每秒删除次数 getmore/s 每秒执行getmore次数 command/s 每秒的命令数,比以上插入.查找.更新.删除的综合还多,还统

在JDBC中实现SQL语句的模糊查询

在JDBC中实现SQL语句的模糊查询 在大多数情况下我们可以在JDBC中写入sql语句通过占位符的方式来直接查询,但是如果要进行模糊查询,需要转义字符才能够正常查询. sql语句: select * from table where tableid like %id%; JDBC中的sql语句: String sql = "select * from table where tableid like \"%\"?\"%\"";//?为占位符 原文

SqlServer用sql语句清理log日志

原文:SqlServer用sql语句清理log日志 USE[master] ALTER DATABASE 数据库名 SET RECOVERY SIMPLE WITH NO_WAIT ALTER DATABASE 数据库名 SET RECOVERY SIMPLE --简单模式 USE 数据库名 DBCC SHRINKFILE (N'数据库名_log' , 2, TRUNCATEONLY) --设置压缩后的日志大小为2M,可以自行指定 USE[master] ALTER DATABASE 数据库名

关于SQLSERVER中用SQL语句查询的一些个人理解

作为一个编程菜鸟说真的很难有什么见解,也就是写给一些刚学习编程的人,希望能给他们一些帮助吧! SQLSERVER作为刚开始入门学习的数据库,SQL语句也并不算太难!说白了也就是建库,建表,建约束,对数据库表进行增删改查! 但是今天主要讲的是查询,最重要也是最难的一部分! 首先呢看这样一段代码: select DNAME as 区县,SNAME as 街道,hos_type.HTID as 户型,PRICE as 价格,CONTENTS as 描述,COPY as 备注 from hos_hous

MySQL、Oracle和SQL Server的分页查询语句

原文地址:http://www.cnblogs.com/ginponson/p/5746435.html 假设当前是第PageNo页,每页有PageSize条记录,现在分别用Mysql.Oracle和SQL Server分页查询student表. 1.Mysql的分页查询 SELECT * FROM student LIMIT (PageNo - 1) * PageSize,PageSize; 理解:(Limit n,m)  =>从第n行开始取m条记录,n从0开始算. 2.Oracel的分页查询