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