Posted on 2007-11-23 13:02
W.R 閱讀(109)
評論(0) 編輯 收藏
1.查詢從第N條到第M條:
在MSSQL中 可以用 方式1:
SELECT TOP m-n+1 * FROM TableA
WHERE (id NOT IN
(SELECT TOP n-1 id FROM TableA))
id 為TableA表的關鍵字

也可用方式2:在存儲過程中新建一張臨時表 取查詢表的主鍵做字段
CREATE procedure pagination1
(@pagesize int, --頁面大小,如每頁存儲20條記錄
@pageindex int --當前頁碼
)
as
set nocount on
begin
declare @indextable table(id int identity(1,1),nid int) --定義表變量
declare @PageLowerBound int --定義此頁的底碼
declare @PageUpperBound int --定義此頁的頂碼
set @PageLowerBound=(@pageindex-1)*@pagesize
set @PageUpperBound=@PageLowerBound+@pagesize
set rowcount @PageUpperBound
insert into @indextable(nid) select gid from TGongwen where fariqi >dateadd(day,-365,getdate()) order by fariqi desc
select O.gid,O.mid,O.title,O.fadanwei,O.fariqi from TGongwen O,@indextable t where O.gid=t.nid
and t.id>@PageLowerBound and t.id<=@PageUpperBound order by t.id
end
set nocount off


借助臨時表來達到你的目的。
個人推薦第1種方式。
另外 not in 與 not exists 在執行效率上是沒有本質的區別的。