博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
row_number() 分页
阅读量:6140 次
发布时间:2019-06-21

本文共 1126 字,大约阅读时间需要 3 分钟。

在sql server 2005 的新方法ROW_NUMBER做一个查询 select row_number() over (order by ProductID) as Row,Name from Product 可以看到返回结果中每条记录都有一个唯一的表示其序列号的标志。 例如我们在分页中要获取的6到第10条记录就可以采用下面的方法 select Row,Name from (select ROW_NUMBER() over(order by ProductID) as Row,Name from Product) as ProductsWithRowNumbers where Row >= 6 and Row <=10 返回相关的记录。

那我们就利用row_number() 做一个存储过程分页

carate    proc [dbo].[page_tbale1] (

  @pageNo int, --当前页数值,最小为1,表示第一页   @pageSize int, --每页显示条数   @PageCount int out,--获取总页数

) as set nocount on  --使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息。--获取总页数

declare @itemscount int select @PageCount =CEILING( (count(ID)+0.0)/@PageSize) 

from Product

order by ProductID

if(@pageNo <> 1)

begin

  set @itemscount=(@pageNo-1)*@pageSize+1

select Row,Name from (select ROW_NUMBER() over(order by ProductID) as Row,Name from Product) as ProductsWithRowNumbers where Row >= @itemscount and Row <= @pageNo * @pageSize

end

else

begin

  select Row,Name from (select ROW_NUMBER() over(order by ProductID) as Row,Name from Product) as ProductsWithRowNumbers where Row >= 1 and Row <= @pageSize

end

set rowcount 0

与之前的老式分页比起来简单方便很多但在性能方面我暂时还不知道 如果有各位知道请留言告之   共同进步

 

 

转载地址:http://jucya.baihongyu.com/

你可能感兴趣的文章
composite-theory-ns-withShare.cs
查看>>
android meta-data 读取
查看>>
[Z]C++ STL中哈希表 hash_map介绍
查看>>
Linux IP代理筛选系统(shell+proxy)
查看>>
Android笔记之属性动画
查看>>
数据持久层
查看>>
极光推送发送控制/别名/取值
查看>>
ArcGIS Engine开发前基础知识(4)
查看>>
Vivado Logic Analyzer的使用(二)
查看>>
[Git] git merge之squash
查看>>
C++/CLI
查看>>
Kerberos安全体系详解---Kerberos的简单实现
查看>>
Vuex demo
查看>>
新建swap分区的规划、挂载和自动挂载示例
查看>>
MySQL用户授权【转】
查看>>
我算是优秀的程序员吗?
查看>>
链表合并
查看>>
Delphi应用程序的调试(五)其他调试工具
查看>>
如何编写可维护的面向对象JavaScript代码
查看>>
win8: html5+css3+js
查看>>