用sqlserver分頁(yè),sqlServer分頁(yè)

sqlserver分頁(yè)

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ù)就是

SQL Server 分頁(yè) 查詢語(yǔ)句

四種方式實(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

數(shù)據(jù)庫(kù)sqlserver如何用存儲(chǔ)過(guò)程做分頁(yè)

存儲(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)

成都網(wǎng)頁(yè)設(shè)計(jì)公司