常用的sql分頁語句 sqlserver

2022-02-06 16:06:58 字數 1456 閱讀 3137

常用的四種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...