亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQL Server > 正文

MSSQL MySQL 數據庫分頁(存儲過程)

2024-08-31 00:57:50
字體:
來源:轉載
供稿:網友
先看看單條 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 頁大小 *
FROM
(
SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* FROM table1
) A
WHERE RowNumber > 頁大小*(頁數-1)


方法4:
適用于 SQL Server 2005

復制代碼 代碼如下:


row_number() 必須制定 order by ,不指定可以如下實現,但不能保證分頁結果正確性,因為排序不一定可靠??赡艿谝淮尾樵冇涗汚在第一頁,第二次查詢又跑到了第二頁。
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 2005

復制代碼 代碼如下:


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已經為我們提供了這樣一個功能。

復制代碼 代碼如下:


select * from table limit [offset,] rows | rows offset offset
limit 子句可以被用于強制 select 語句返回指定的記錄數。limit 接受一個或兩個數字參數。參數必須是一個整數常量。如果給定兩個參數,第一個參數指定第一個返回記錄行的偏移量,第二個參數指定返回記錄行的最大數目。初 始記錄行的偏移量是 0(而不是 1): 為了與 postgresql 兼容,mysql 也支持句法: limit # offset #。
mysql> select * from table limit 5,10; // 檢索記錄行 6-15
//為了檢索從某一個偏移量到記錄集的結束所有的記錄行,可以指定第二個參數為 -1:
mysql> select * from table limit 95,-1; // 檢索記錄行 96-last.
//如果只給定一個參數,它表示返回最大的記錄行數目:
mysql> select * from table limit 5; //檢索前 5 個記錄行
//換句話說,limit n 等價于 limit 0,n。
1. select * from tablename <條件語句> limit 100,15
從100條記錄后開始取15條 (實際取取的是第101-115條數據)
2. select * from tablename <條件語句> limit 100,-1
從第100條后開始-最后一條的記錄
3. select * from tablename <條件語句> limit 15
相當于limit 0,15 .查詢結果取前15條數據
說明,頁大小:每頁的行數;頁數:第幾頁。使用時,請把"頁大小"和"頁大小*(頁數-1)"替換成數字。


其它的方案:如果沒有主鍵,可以用臨時表,也可以用方案三做,但是效率會低。
建議優化的時候,加上主鍵和索引,查詢效率會提高。

通過SQL 查詢分析器,顯示比較:我的結論是:
分頁方案二:(利用ID大于多少和SELECT TOP分頁)效率最高,需要拼接SQL語句
分頁方案一:(利用Not In和SELECT TOP分頁) 效率次之,需要拼接SQL語句
分頁方案三:(利用SQL的游標存儲過程分頁) 效率最差,但是最為通用
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久中文字幕一区| 国产成人一区二| 欧美在线观看网站| 久久久噜噜噜久久中文字免| 久久久噜久噜久久综合| 国产91网红主播在线观看| 欧美床上激情在线观看| 亚洲第一页在线| 国产精品嫩草影院一区二区| 粗暴蹂躏中文一区二区三区| 日韩欧美在线观看视频| 色视频www在线播放国产成人| 成人久久一区二区三区| 中文字幕日韩av电影| 亚洲www在线观看| 91精品国产综合久久男男| 日韩有码片在线观看| 欧美日韩在线看| 欧美激情精品久久久久久变态| 亚洲美女喷白浆| 亚洲 日韩 国产第一| 亚洲欧美国产精品专区久久| 久久久久久一区二区三区| 久久影院在线观看| 精品国产成人在线| 日韩二区三区在线| 国产自产女人91一区在线观看| 亚洲欧美在线免费| 国产一区二区三区久久精品| 久久久久久久999精品视频| 久久久国产影院| 亚洲欧美综合另类中字| 日韩精品视频在线观看网址| 精品精品国产国产自在线| 国产狼人综合免费视频| 欧美自拍大量在线观看| 国产91|九色| 国产欧美中文字幕| 日韩欧美在线观看| 中文字幕不卡av| 欧美成人一二三| 精品久久久久久久中文字幕| 精品国产一区二区三区久久久狼| 69av在线视频| 中文字幕精品久久久久| 久久精品国产欧美激情| 国产成人精品视频在线| 亚洲2020天天堂在线观看| 懂色aⅴ精品一区二区三区蜜月| 91人成网站www| 欧美乱人伦中文字幕在线| 成人福利视频网| 2019中文字幕全在线观看| 久久国产精品久久国产精品| 午夜免费日韩视频| 一区二区三区久久精品| 狠狠色香婷婷久久亚洲精品| 国产精品久久久久久av福利| 国产成人拍精品视频午夜网站| 91夜夜未满十八勿入爽爽影院| 欧美色videos| 亚洲欧美日韩国产精品| 成人在线激情视频| 欧美极品少妇xxxxⅹ免费视频| 欧美肥臀大乳一区二区免费视频| 亚洲精品网站在线播放gif| 中文字幕亚洲自拍| 高清欧美一区二区三区| 亚洲欧洲午夜一线一品| 国产精品啪视频| 岛国av一区二区| 欧美一级视频一区二区| 91久久综合亚洲鲁鲁五月天| 日韩免费在线电影| 91精品国产高清自在线| 一区二区欧美在线| 欧美日韩国产影院| 91牛牛免费视频| 欧美特黄级在线| 欧洲永久精品大片ww免费漫画| 欧美激情视频在线免费观看 欧美视频免费一| 欧美日韩国产在线看| 欧美性理论片在线观看片免费| 欧美精品久久久久| 久久视频在线直播| 欧美电影免费观看电视剧大全| 亚洲电影免费在线观看| 亚洲va欧美va国产综合久久| 欧洲中文字幕国产精品| 亚洲久久久久久久久久久| 国产精品嫩草影院久久久| 久热精品视频在线观看| 欧美午夜精品久久久久久人妖| 91精品视频免费| 久久成人亚洲精品| 亚洲第一二三四五区| 国产一区二区三区视频免费| 国产亚洲视频在线观看| 亚洲最大福利视频网| 91麻豆国产精品| 国产成人在线精品| 国产精品中文字幕在线| 亚洲肉体裸体xxxx137| 日韩欧美在线免费| 国产精品久久久久久久久| 亚洲va欧美va在线观看| 亚洲国产精久久久久久| 欧美性xxxxxx| 国产精品电影一区| 亚洲国产精品成人一区二区| 九九热这里只有精品免费看| 久久久在线视频| 性色av香蕉一区二区| 日韩精品视频在线| 亚洲天堂男人天堂女人天堂| 日韩美女av在线| 揄拍成人国产精品视频| 亚洲一区二区中文字幕| 欧美成人中文字幕在线| 欧美激情在线播放| 高清在线视频日韩欧美| 日韩综合视频在线观看| 欧美在线视频免费| 91在线视频精品| 中文亚洲视频在线| 97超级碰在线看视频免费在线看| 精品久久久视频| 欧美精品精品精品精品免费| 日本欧美一二三区| 欧美性猛交xxxx富婆| 亚洲天堂av女优| 久久久久久综合网天天| 欧美激情18p| 国产精品一区专区欧美日韩| 亚洲一区二区三区视频| 欧美激情在线一区| 日韩视频在线观看免费| 欧美激情一区二区三区久久久| 欧美亚洲在线视频| 亚洲伊人久久大香线蕉av| 亚洲自拍高清视频网站| 欧美国产日韩在线| 亚洲欧美色图片| 秋霞av国产精品一区| 91久久久久久| 国产精品视频久久| 亚洲男人天堂古典| 国产亚洲人成网站在线观看| 久久人体大胆视频| 久久久久久久激情视频| www日韩中文字幕在线看| 日韩av电影免费观看高清| 亚洲影院在线看| 久久的精品视频| 国产精品影院在线观看| 91视频九色网站| 亚洲新声在线观看| 成人精品一区二区三区| 成人激情视频在线播放| 国产有码在线一区二区视频| 黄色一区二区在线观看| 日韩av片免费在线观看| 精品久久久久久久久久久久久| 国产成人极品视频|