欢迎光临
我们一直在努力

用sql 2005的row_number() 实现分页功能_数据库技巧

建站超值云服务器,限时71元/月

DECLARE @pagenum AS INT, @pagesize AS INT
SET @pagenum = 2
SET @pagesize = 3
SELECT *
FROM (SELECT ROW_NUMBER() OVER(ORDER BY newsid DESC) AS rownum,
        newsid, topic, ntime, hits
      FROM news) AS D
WHERE rownum BETWEEN (@pagenum-1)*@pagesize+1 AND @pagenum*@pagesize
ORDER BY newsid DESC



aspx里面只需给SQL传入pageid和条数即可。


CSDN上还有个存储过程实现分页的代码:


ALTER PROCEDURE news_Showlist
(
@tblName   varchar(255),       — 表名
@strGetFields varchar(1000),  — 需要返回的列
@fldName varchar(255),      — 排序的字段名
@PageSize   int ,          — 页尺寸
@PageIndex  int ,           — 页码
@strWhere  varchar(1500),  — 查询条件(注意: 不要加where)
@Sort varchar(255)      –排序的方法


)
AS
declare @strSQL   varchar(5000)       — 主语句
declare @strTmp   varchar(110)        — 临时变量
declare @strOrder varchar(400)        — 排序类型


 


if @Sort = desc
begin
set @strTmp = <(select min
set @strOrder = order by + @fldName + desc
–如果@OrderType不是,就执行降序,这句很重要!
end
else
begin
set @strTmp = >(select max
set @strOrder = order by + @fldName + asc
end
 
if @PageIndex = 1
begin
if @strWhere !=   
  begin
set @strSQL = select top + str(@PageSize) + +@strGetFields+   from + @tblName + where + @strWhere + + @strOrder
  end
else
  begin
set @strSQL = select top + str(@PageSize) + +@strGetFields+   from + @tblName + + @strOrder
  end
–如果是第一页就执行以上代码,这样会加快执行速度
end
else
begin
–以下代码赋予了@strSQL以真正执行的SQL代码
set @strSQL = select top + str(@PageSize) + +@strGetFields+   from
+ @tblName + where + @fldName + + @strTmp + (+ @fldName + ) from (select top + str((@PageIndex-1)*@PageSize) + + @fldName + from + @tblName + + @strOrder + ) as tblTmp)+ @strOrder
 
if @strWhere !=
set @strSQL = select top + str(@PageSize) + +@strGetFields+   from
+ @tblName + where + @fldName + + @strTmp + (
+ @fldName + ) from (select top + str((@PageIndex-1)*@PageSize) +
+ @fldName + from + @tblName + where + @strWhere +
+ @strOrder + ) as tblTmp) and + @strWhere + + @strOrder
end
exec (@strSQL)
RETURN

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 用sql 2005的row_number() 实现分页功能_数据库技巧
分享到: 更多 (0)