基於SQL語句的分頁

2021-06-20 09:35:44 字數 2041 閱讀 3892

基於sql語句的分頁一般使用儲存過程實現。它通過編寫sql查詢,對資料進行篩選,僅返回當前頁面所需的資料內容。要進行分頁,首先必須要知道每頁顯示多少條(pagesize)、要顯示第幾頁(pageindex)。

基於sql語句的分頁方式的優勢在於每次返回資料量較少(僅返回當前頁所需的資料內容),適合大資料量的資料進行分頁。

1.1 語法

select top pagesize *

from 表

where 條件

and id not in(

select top pagesize * (pageindex - 1) id

from 表

where 條件 order by 排序條件

)order by 排序條件

1.2 例項:建立儲存過程,實現分頁查詢學生資訊

if exists (select * from sysobjects where name = 'proc_searchstudent' )

drop procedure proc_searchstudent

go/*---建立儲存過程----*/

create procedure proc_searchstudent

@pagesize int=10, --頁數

@pageindex int=1 --頁碼

asselect top (@pagesize) *

from student

where 1=1

and s# not in(

select top (@pagesize*(@pageindex-1)) id

from student

where 1=1 order by id asc

) order by id asc

go

1.3 測試:查詢20條,第3頁的學生資訊

/*查詢20條,第3頁的學生資訊*/

exec proc_searchstudent @pagesize = 20 , @pageindex = 3

2.1 語法

select * from(

select row_number() over(order by 排序條件) as rownumber,* from 表

where 條件

) temp_table where rownumber between (pageindex - 1) * pagesize + 1 and pageindex * pagesize

2.2 例項:建立儲存過程,實現分頁查詢學生資訊。

if exists (select * from sysobjects where name = 'proc_pagestudent' )

drop procedure proc_pagestudent

go/*---建立儲存過程----*/

create procedure proc_pagestudent

@pagesize int=10, --頁數

@pageindex int=1 --頁碼

asselect * from(

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

where 1=1

) temp_table where rownumber between (@pageindex - 1) * @pagesize + 1 and @pageindex * @pagesize

go

2.3 測試:查詢20條,第3頁的學生資訊

/*查詢20條,第3頁的學生資訊*/

exec proc_pagestudent @pagesize = 20 , @pageindex = 3

3、c#中構建乙個分頁的應用

歡迎閱讀本部落格的另外一篇關於c#分頁應用的文章:

Sql 分頁語句

with temptb as select row number over order by id as rowid,from pagecut select from temptb where rowid between 2 50 and 2 50 50 這是乙個資料分頁方法,從sql2005起就支...

SQL分頁語句

這個分頁方法 sql分頁語句 本人對原作者的方案二做了小小的改動 原語句 select top 頁大小 from table1 where id select isnull max id 0 from select top 頁大小 頁數 1 id from table1 order by id a ...

SQL分頁語句

有關分頁 sql 的資料很多,有的使用儲存過程,有的使用游標。本人不喜歡使用游標,我覺得它耗資 效率低 使用儲存過程是個不錯的選擇,因為儲存過程是經過預編譯的,執行效率高,也更靈活。先看看單條 sql 語句的分頁 sql 吧。方法1 適用於 sql server 2000 2005 select t...