【清清月兒】用SQL 2005的ROW_NUMBER() 實現分頁功能
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 = ''
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
(
@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 = ''
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
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-329649/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Sql Server 2005 row_number()分頁效能測試SQLServer
- [SQL Server]分頁功能的實現SQLServer
- SQL Server 2005快速Web分頁的實現SQLServerWeb
- 【清清月兒】ASP.NET中用healthMonitor屬性用ASP.NET
- 分頁功能的實現
- SQL Server的分頁優化及Row_Number()分頁存在的問題SQLServer優化
- jsp分頁功能的實現JS
- DataGridView分頁功能的實現View
- 使用 jQuery 實現分頁功能jQuery
- web 實現分頁列印功能Web
- oracle資料庫用sql實現快速分頁Oracle資料庫SQL
- Java Web(十一) 分頁功能的實現JavaWeb
- SQL2000分頁儲存過程,針對表,2005有自帶的row_numberSQL儲存過程
- DjangoRestFramework 實現分頁功能與搜尋功能DjangoRESTFramework
- 文章內容分頁功能實現
- 用pandas實現SQL功能SQL
- MYSQL-實現ORACLE- row_number() over(partition by ) 分組排序功能.MySqlOracle排序
- SQL SERVER 2005分頁儲存過程SQLServer儲存過程
- Vue + element.ui table 分頁功能+搜尋功能的實現VueUI
- mysql使用自定義序列實現row_number功能MySql
- aspnetpager+repeater+oracle實現分頁功能Oracle
- WPF DataGrid分頁功能實現程式碼
- 分頁的實現
- 巧用ROW_NUMBER 實現SQL資料任意排序SQL排序
- 用AutoLayout實現分頁滾動
- 如何 用hibernate 實現分頁
- Vue + Element UI + Lumen 實現通用表格功能 - 分頁VueUI
- struts2.0+E3.Table0.8分頁功能的實現
- SqlServer 分頁 ROW_NUMBER() OVER(Order by * DESC ) AS RowNumberSQLServer
- 使用row_number()分頁函式取代group by函式
- 支援DISTINCT的通用分頁儲存過程(SQL2005)儲存過程SQL
- Oracle常見SQL分頁實現方案介紹OracleSQL
- 用struts的標籤怎樣實現分頁?
- [原創]用Session和唯一索引欄位實現通用Web分頁功能Session索引Web
- Paging Records Using SQL Server 2005 Database - ROW_NUMBER FunctionSQLServerDatabaseFunction
- OceanBase金融SQL、億萬級別據量最佳化案例(Row_number 開窗 + 分頁SQL)SQL
- SQL 2005 得到增強的功能SQL
- 用javabean來實現MySQL的分頁顯示(轉)JavaBeanMySql