SQL分頁查詢

2022-06-06 03:36:07 字數 1424 閱讀 6500

sqlserver 的資料分頁:

假設現在有這樣的一張表:

create table test

( id int primary key not null identity,

names varchar(20)

)然後向裡面插入大約1000條資料,進行分頁測試

假設頁數是10,現在要拿出第5頁的內容,查詢語句如下:

--10代表分頁的大小

select top 10 *

from test

where id not in

( --40是這麼計算出來的:10*(5-1)

select top 40 id from test order by id

)order by id

原理:需要拿出資料庫的第5頁,就是40-50條記錄。首先拿出資料庫中的前40條記錄的id值,然後再拿出剩餘部分的前10條元素

第二種方法:

還是以上面的結果為例,採用另外的一種方法

--資料的意思和上面提及的一樣

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值的記錄。

這個查詢有乙個條件,就是id必須是int型別的。

第三種方法:

select top 10 *

from

( select row_number() over(order by id) as rownumber,* from test

) awhere rownumber > 40

原理:先把表中的所有資料都按照乙個rownumber進行排序,然後查詢rownuber大於40的前十條記錄

這種方法和oracle中的一種分頁方式類似,不過只支援2005版本以上的

第四種:

儲存過程查詢

建立儲存過程

alter procedure pagedemo

@pagesize int,

@page int

asdeclare @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執行儲存過程

exec 10,5

SQL分頁查詢

分頁sql查詢在程式設計的應用很多,主要有儲存過程分頁和sql分頁兩種,我比較喜歡用sql分頁,主要是很方便。為了提高查詢效率,應在排序欄位上加索引。sql分頁查詢的原理很簡單,比如你要查100條資料中的30 40條,你先查詢出前40條,再把這30條倒序,再查出這倒序後的前十條,最後把這十條倒序就是...

sql分頁查詢

declare id int declare moverecords int declare currentpage int declare pagesize int set currentpage 300 set pagesize 100 currentpage和 pagesize是傳入引數 se...

SQL分頁查詢

關於sql語句分頁,網上也有很多啦,我貼一部分過來,並且總結自己已知的分頁到下面,方便日後查閱。方法1 適用於 sql server 2000 2005 1 select top 頁大小 2from table1 3where id not in4 5select top 頁大小 頁數 1 id f...