MSSQL MySQL 數據庫分頁(存儲過程)建站知識
導讀:1建站知識有關分頁 SQL 的資料很多,有的使用存儲過程,有的使用游標。本人不喜歡使用游標,我覺得它耗資、效率低;使用存seo網站關鍵詞優化個業網站建設公司。
先看看單條 SQL 語句的分頁 SQL 吧。 方法1: 適用于 SQL Server 2000/2005
復制代碼 代碼如下:
SELECT TOP 頁大小 * FROM table1 WHERE id NOT IN ( SELECT TOP 頁大小*(頁數-1) id FROM table1 ORDER BY id ) ORDER BY id
方法2: 適用于 SQL Server 2000/2005復制代碼 代碼如下:
SELECT TOP 頁大小 * FROM table1 WHERE id > ( SELECT ISNULL(MAX(id),0) FROM ( SELECT TOP 頁大小*(頁數-1) id FROM table1企業網站建設 ORDER BY id ) A ) ORDER BY id
方法3: 適用于 SQL Server 2005復制代碼 代碼如下:
SELECT TOP 頁大小 網站優化seo培訓* FROM ( SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* FROM table1 ) A WHERE RowNumber > 頁大小*(頁數-1)
方法4: 適用于 SQL Server 2005復制代碼 代碼如下:
row_number() 必須制定 order by ,不指定可以如下實現,但不能保證分頁結果正確性,因為排序不一定可靠。可能第一次查詢記錄A在第一頁,第二次查詢又跑到了第二頁。 declare @PageNo int ,@pageSize int; set @PageNo = 2 set @pageSize=20 select * from ( select row_number() over(order by getdate()) rn,* from sys.objects) tb where rn >(@PageNo-1)*@pageSize and rn <=@PageNo*@pageSize
還有一種方法就是將排序字段作為變量,通過動態SQL 實現,可以改成存儲過程。復制代碼 代碼如下:
declare @PageNo int ,@pageSize int; declare @TableName varchar(128),@OrderColumns varchar(500), @SQL varchar(max); set @PageNo = 2 set @pageSize=20 set @TableName = 'sys.objects' set @OrderColumns = 'name ASC,object_id DESC' set @SQL = 'select * from ( select row_number() over(order by '+@OrderColumns+' ) rn,* from ' +@TableName+')tb where rn >'+convert(varchar(50),(@PageNo-1)*@pageSize) +' and rn <= '+convert(varchar(50),@PageNo*@pageSize) print @SQL exec(@SQL)
方法5:(利用SQL的游標存儲過程分頁) 適用于 SQL Server 20網站建設教程05復制代碼 代碼如下:
create procedure SqlPager @sqlstr nvarchar(4000), --查詢字符串 @currentpage int, --第N頁 @pagesize int --每頁行數 as set nocount on declare @P1 int, --P1是游標的id @rowcount int exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output select ceiling(1.0*@rowcount/@pagesize) as 總頁數--,@rowcount as 總行數,@currentpage as 當前頁 set @currentpage=(@currentpage-1)*@pagesize+1 exec sp_cursorfetch @P1,16,@currentpage,@pagesize exec sp_cursorclose @P1 set nocount off
方法5:(利用MySQL的limit) 適用于 MySQL mysql中limit的用法詳解[數據分頁常用] 在我們使用查詢語句的時候,經常要返回前幾條或者中間某幾行數據,這個時候怎么辦呢?不用擔心,mysql已經為我們提供了這樣一個功能。聲明: 本文由我的SEOUC技術文章主頁發布于:2023-05-22 ,文章MSSQL MySQL 數據庫分頁(存儲過程)建站知識主要講述分頁,存儲過程,SQL網站建設源碼以及服務器配置搭建相關技術文章。轉載請保留鏈接: http://www.bifwcx.com/article/web_4145.html