SqlServer 經常使用分頁方法總結

2021-09-08 04:39:58 字數 2307 閱讀 8422

以下演示樣例總結了,sqlserver資料庫 經常使用分頁方法,僅供學習參考

/********** 使用 rownumber 和 between and 組合分頁 **********/

create proc proc_fuzzysearchandpaging

@pageindex int, --頁索引

@pagesize int, --頁大小

@searchkey nvarchar(10), --查詢keyword

@totalcount int output --總資料條數

as begin

--查詢 當前頁 資料

select * from(

select *,[no]=row_number() over(order by s.s_id desc) from stuinfo s

where s.s_name like('%'+@searchkey+'%')

) t

where t.[no] between @pagesize*(@pageindex-1)+1 and @pageindex*@pagesize

order by t.s_id desc

--總資料條數

select @totalcount = count(*) from stuinfo s where s.s_name like('%'+@searchkey+'%')

endgo

/********** 使用 top 和 not in 組合分頁 **********/

create proc proc_fuzzysearchandpaging2

@pageindex int, --當前頁索引

@pagesize int, --每頁顯示的資料條數

@fuzzykey nvarchar(20), --模糊匹配的keyword

@count int output --總資料條數(用來推斷要分多少頁)

as begin

select top(@pagesize) * from stuinfo s

where s.s_name like('%'+@fuzzykey+'%')

and s.s_id not in(

select top((@pageindex-1)*@pagesize) s.s_id from stuinfo s

where s.s_name like('%'+@fuzzykey+'%')

order by s.s_id desc

)order by s.s_id desc

--總資料條數

select @count=count(*) from stuinfo s where s.s_name like('%'+@fuzzykey+'%')

endgo

/// /// 分頁

///

/// 查詢keyword

/// 頁索引

/// 頁大小

/// 總頁數

///

public ilistfuzzypaging(string key, int pageindex, int pagesize, ref int pagecount)

如有,更好方法歡迎拿出來分享!

擴充:分頁時,能夠充分借助 暫時表 和  with as 語句提高查詢效率

with as語句演示樣例:

declare @searchkey nvarchar(10)  --查詢keyword

with t as(

select * from stuinfo s

where s.s_name like('%'+@searchkey+'%')

)

暫時表 語句演示樣例:

declare @searchkey nvarchar(10)  --查詢keyword

select * into #temp2 from (

select * from stuinfo s where s.s_name like('%'+@searchkey+'%')

) u

mysql 分頁

select u.* from users as u

limit ($pindex-1)*$psize,$pindex*$psize;

SQL Server 分頁查詢

ps,此文是純個人筆記 公司裡乙個專案裡用到了一種資料庫分頁查詢的方式 1 定義乙個臨時的table 這個table有乙個自增的之間id,和要查的資料表的主鍵id 2 再一次查詢,用id在分頁數段來and 一下結果 具體操作如下 定義個臨時表 temptable declare temptable ...

Sql Server分頁語句

分頁方案一 利用not in和select top分頁 語句形式 select top 10 from testtable where id not in select top 20 id from testtable order by id order by id select top 頁大小 f...

sql server實現分頁

sqlserver 的資料分頁 假設現在有這樣的一張表 create table test id int primary key not null identity,names varchar 20 然後向裡面插入大約1000條資料,進行分頁測試 假設頁數是10,現在要拿出第5頁的內容,查詢語句如下...