当前位置: 移动技术网 > IT编程>开发语言>.net > 【转载】Sqlserver的SQL语句实现分页查询

【转载】Sqlserver的SQL语句实现分页查询

2019年02月28日  | 移动技术网IT编程  | 我要评论

粤j55555,2016年8月里番,北京赛车联盟

在应用程序的开发中,如果数据库中的数据量过于的庞大,则需要针对查询数据做分页处理,取出对应分页中的数据,在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里面为排序的规则。

 

备注:此文章转载自博主个人技术站点,博主个人站致力于分享相关技术文章,同时也分享windows服务器和linux服务器运维等知识:

转载请标明出处。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网