四種方式實現SQLServer 分頁查詢

2021-07-04 19:30:07 字數 1431 閱讀 5364

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

四種方式實現SQLServer 分頁查詢

sqlserver 的資料分頁 自己使用時的心得 select top 10 這個10 位一頁顯示的個數 from nrc news where n id notin 40 是這麼計算出來的 10 5 1 每頁10 條,查第5頁 select top40 n id from nrc news ord...

spring AOP四種實現方式

1.建立通知 定義乙個介面 public inte ce sleepable 然後寫乙個human類,他實現了這個介面 public human implements sleepable 2.編寫乙個sleephelper類,它裡面包含了睡覺的輔助工作,用aop術語來說它就應該是通知 public ...

SQL Server 2000的四種備份方式

一 資料庫備份 應用於 資料更新緩慢的資料庫中 備份方式 建立備份完成時資料庫內存在的資料的副本 缺點 使用的儲存空間多,完成備份需要的時間長。二 差異備份或稱增量備份 應用於 資料更新較快的資料庫中 備份方式 將最近一次資料庫備份以來發生的資料變化備份起來 缺點 無法提供到失敗點的無資料損失備份。...