基於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...