<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
sqlServer的分頁查詢和mysql語句不一樣,有三種實現方式。分別是:offset /fetch next、利用max(主鍵)、利用row_number關鍵字
2012版本及以上才有,SQL server公司升級後推出的新方法。
公式:
-- 分頁查詢公式-offset /fetch next select * from 表名 order by 主鍵 或 其他索引列 -- @pageIndex:頁碼、@pageSize:每頁記錄數 offset ((@pageIndex-1)*@pageSize) rows fetch next @pageSize rows only;
範例:
-- 分頁查詢第2頁,每頁有10條記錄 select * from tb_user order by uid offset 10 rows fetch next 10 rows only ;
說明:
offset 10 rows ,將前10條記錄捨去,fetch next 10 rows only ,向後再讀取10條資料。
公式:
-- 分頁查詢公式-利用max(主鍵) select top @pageSize * from 表名 where 主鍵>= (select max(主鍵) from ( select top ((@pageIndex-1)*@pageSize+1) 主鍵 from 表名 order by 主鍵 asc) temp_max_ids) order by 主鍵;
範例:
-- 分頁查詢第2頁,每頁有10條記錄 select top 10 * from tb_user -- 3、再重新在這個表查詢前10條,條件: id>=max(id) where uid>= -- 2、利用max(id)得到前11條記錄中最大的id (select max(uid) from ( -- 1、先top前11條行記錄 select top 11 uid from tb_user order by uid asc) temp_max_ids) order by uid;
說明:
先top前11條行記錄,然後利用max(id)得到最大的id,之後再重新在這個表查詢前10條,不過要加上條件,where id>=max(id)。
中心思想:其實就是先得到該頁的初始id,PS:別忘了加上排序哦
這種方式也是比較常用的,直接利用row_number() over(order by id)函數計算出行數,選定相應行數返回即可,不過該關鍵字只有在SQL server 2005版本以上才有。
公式:
-- 分頁查詢公式-row_number() select top @pageSize * from ( -- rownumber是別名,可按自己習慣取 select row_number() over(order by 主鍵 asc) as rownumber,* from 表名) temp_row where rownumber>((@pageIndex-1)*@pageSize);
範例:
-- 分頁查詢第2頁,每頁有10條記錄 select top 10 * from ( -- 子查詢,多加一個rownumber列返回 select row_number() over(order by uid asc) as rownumber,* from tb_user) temp_row --限制起始行標 where rownumber>10;
說明:
利用row_number函數給每行記錄標了一個序號,相當於在原表中多加了1列返回。
上述範例,是以序號11為起始行,查詢前10條記錄,即為第2頁資料。
優化:
可以看到,子查詢查詢了全表資料,如果資料量大,效率是比較低的。
下面是優化後的SQL,
公式:
-- 分頁查詢公式-row_number()-優化版本 select * from ( -- rownumber是別名,可按自己習慣取 select top (@pageIndex*@pageSize) row_number() over(order by 主鍵 asc) as rownumber,* from 表名) temp_row where rownumber>((@pageIndex-1)*@pageSize);
範例:
-- 分頁查詢第2頁,每頁有10條記錄 select * from ( -- 子查詢,限制了返回前20條資料 select top 20 row_number() over(order by uid asc) as rownumber,* from tb_user) temp_row --限制起始行標 where rownumber>10;
說明:
這裡,子查詢僅查詢到當前頁的最後一行,沒有進行全表查詢,所以效率上要快一點。在外層限制起始行標,是沒變的,但是卻在內層控制了結尾行標。
上述範例,是以序號11為起始行,查詢20以內的記錄,即為第2頁資料。
更多介紹,可檢視我的另外篇文章:SQL Server中row_number函數用法介紹
到此這篇關於sqlServer實現分頁查詢的三種方式的文章就介紹到這了,更多相關sqlServer分頁查詢實現內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45