sqlserver分頁(yè)有四種方法,先給大家介紹一種常用的
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、成都外貿(mào)網(wǎng)站建設(shè)、順德網(wǎng)絡(luò)推廣、微信小程序、順德網(wǎng)絡(luò)營(yíng)銷、順德企業(yè)策劃、順德品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供順德建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:muchs.cn
查看1到3條數(shù)據(jù)
假如查詢每頁(yè)大小為3,查詢第2頁(yè)的數(shù)據(jù)就是
四種方式實(shí)現(xiàn)SQLServer 分頁(yè)查詢
SQLServer 的數(shù)據(jù)分頁(yè):
假設(shè)現(xiàn)在有這樣的一張表:
CREATE TABLE test
(
id int primary key not null identity,
names varchar(20)
)
然后向里面插入大約1000條數(shù)據(jù),進(jìn)行分頁(yè)測(cè)試
假設(shè)頁(yè)數(shù)是10,現(xiàn)在要拿出第5頁(yè)的內(nèi)容,查詢語(yǔ)句如下:
--10代表分頁(yè)的大小
select top 10 *
from test
where id not in
(
--40是這么計(jì)算出來(lái)的:10*(5-1)
select top 40 id from test order by id
)
order by id
原理:需要拿出數(shù)據(jù)庫(kù)的第5頁(yè),就是40-50條記錄。首先拿出數(shù)據(jù)庫(kù)中的前40條記錄的id值,然后再拿出剩余部分的前10條元素
第二種方法:
還是以上面的結(jié)果為例,采用另外的一種方法
--數(shù)據(jù)的意思和上面提及的一樣
select top 10 *
from test
where id
(
select isnull(max(id),0)
from
(
select top 40 id from test order by id
) A
)
order by id
原理:先查詢前40條記錄,然后獲得其最id值,如果id值為null的,那么就返回0
然后查詢id值大于前40條記錄的最大id值的記錄。
這個(gè)查詢有一個(gè)條件,就是id必須是int類型的。
第三種方法:
select top 10 *
from
(
select row_number() over(order by id) as rownumber,* from test
) A
where rownumber 40
原理:先把表中的所有數(shù)據(jù)都按照一個(gè)rowNumber進(jìn)行排序,然后查詢r(jià)ownuber大于40的前十條記錄
這種方法和oracle中的一種分頁(yè)方式類似,不過(guò)只支持2005版本以上的
第四種:
存儲(chǔ)過(guò)程查詢
創(chuàng)建存儲(chǔ)過(guò)程
alter procedure pageDemo
@pageSize int,
@page int
AS
declare @temp int
set @temp=@pageSize*(@page - 1)
begin
select top (select @pageSize) * from test where id not in (select top (select @temp) id from test) order by id
end
執(zhí)行存儲(chǔ)過(guò)程
exec 10,5
存儲(chǔ)過(guò)程:create Procedure pname
( @pageIndex int,@pageSize)
as
select * from tableName order by id
offset @pageIndex * pageSize fetch next pageSize rows only
分頁(yè):
sqlserver 在2008之前 使用 top 和 not int top 的方式來(lái)做分頁(yè)
2008以后使用 row_number() 函數(shù)作為分頁(yè)關(guān)鍵函數(shù)
2012使用 offset 1 fetch next 10 rows only
你問(wèn)了2個(gè)問(wèn)題,你可以優(yōu)先把視圖,存儲(chǔ)過(guò)程,觸發(fā)器等弄明白,分頁(yè)是查詢,在存儲(chǔ)過(guò)程里可以寫(xiě)復(fù)雜的sql文,只是在運(yùn)行時(shí)是預(yù)編譯和參數(shù)化查詢防止sql注入
本文題目:用sqlserver分頁(yè),sqlServer分頁(yè)
文章轉(zhuǎn)載:http://muchs.cn/article16/phgedg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、微信小程序、網(wǎng)站維護(hù)、企業(yè)建站、網(wǎng)站收錄、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)