常用的四種sqlserver分頁語句
現在有一張表pln_project,裡邊有1000條資料
第一種分頁實現:假設頁數是10,現在要拿出第5頁的內容,查詢語句如下
select top 10 *
from pln_project
where project_guid not in
(--40是這麼計算出來的:10*(5-1)
select top 40 project_guid from pln_project order by project_guid
)order by project_guid
原理:需要拿出資料庫的第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 project_guid) as rownumber,* from pln_project
) awhere rownumber > 40
原理:先把表中的所有資料都按照乙個rownumber進行排序,然後查詢rownuber大於40的前十條記錄
這種方法和oracle中的一種分頁方式類似,不過只支援2005版本以上的
第四種:儲存過程查詢
create procedure pagedemo
@pagesize int,
@page int
asdeclare @temp int
set @temp=@pagesize*(@page - 1)
begin
select top (select @pagesize) * from pln_project where project_guid not in (select top (select @temp) project_guid from pln_project) order by project_guid
end--執行儲存過程
exec pagedemo 10,5
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...