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
order
byn_id )
order
byn_id
//注意點,sqlserver分頁語句中,不能繫結,只能拼接,否則報錯
string sql="select top "+pagesize+" * from nrc_news where n_id not in(select top "+startindex+" n_id from nrc_news order by n_id)order by n_id";
pstmt=conn.preparestatement(sql);
***********************************=
假設現在有這樣的一張表:
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 的資料分頁 假設現在有這樣的一張表 create table test id int primary key not null identity,names varchar 20 然後向裡面插入大約1000條資料,進行分頁測試 假設頁數是10,現在要拿出第5頁的內容,查詢語句如下...
spring AOP四種實現方式
1.建立通知 定義乙個介面 public inte ce sleepable 然後寫乙個human類,他實現了這個介面 public human implements sleepable 2.編寫乙個sleephelper類,它裡面包含了睡覺的輔助工作,用aop術語來說它就應該是通知 public ...
SQL Server 2000的四種備份方式
一 資料庫備份 應用於 資料更新緩慢的資料庫中 備份方式 建立備份完成時資料庫內存在的資料的副本 缺點 使用的儲存空間多,完成備份需要的時間長。二 差異備份或稱增量備份 應用於 資料更新較快的資料庫中 備份方式 將最近一次資料庫備份以來發生的資料變化備份起來 缺點 無法提供到失敗點的無資料損失備份。...