国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > SQL Server > 正文

用SQL 2005的ROW_NUMBER() 實現(xiàn)分頁功能

2024-08-31 01:05:39
字體:
供稿:網(wǎng)友

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和條數(shù)即可。

CSDN上還有個存儲過程實現(xiàn)分頁的代碼:

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不是,就執(zhí)行降序,這句很重要!
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
--如果是第一頁就執(zhí)行以上代碼,這樣會加快執(zhí)行速度
end
else
begin
--以下代碼賦予了@strSQL以真正執(zhí)行的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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 莎车县| 工布江达县| 荃湾区| 通山县| 宜黄县| 津南区| 桃江县| 平乡县| 灵川县| 桦南县| 从江县| 揭阳市| 日喀则市| 丰台区| 千阳县| 大竹县| 遂昌县| 察雅县| 普洱| 吴川市| 微山县| 织金县| 锡林浩特市| 赤峰市| 孝昌县| 大英县| 大方县| 高州市| 广饶县| 鹤壁市| 江阴市| 仙游县| 咸宁市| 子长县| 平南县| 辽中县| 嘉鱼县| 高州市| 合作市| 宜章县| 高青县|