隨機排序分頁處理示例

2021-08-21 23:29:40 字數 1279 閱讀 9918

--*/

/*--處理要求

用如下語句可以實現隨機排序:

select * from xiaofei where status=1 order by newid()

這樣的話每次使用者重新整理頁面排序就會變.

現在我想做成不同使用者進來頁面看到的排序都不一樣,但是同乙個使用者在一段時間內每次重新整理頁面看到的排序都是一樣的

--*/go

/*--處理分析

借助臨時表快取排序結果,再結合原表主鍵查詢資料就可以了

--*/

--大致的處理儲存過程

create proc p_qry

@username sysname, --使用者名稱,根據使用者名稱來設定排序處理的臨時表

@pagesize int=5, --每頁大小

@currentpage int=1 --當前頁,>=1表示正常查詢,<1表示重建臨時表

asset nocount on

declare @tbname sysname

set @tbname=quotename('##'+@username)

--如果臨時表不存在,或者@currentpage<1,則生成處理臨時表

if object_id(@tbname) is null or isnull(@currentpage,0)<1

begin

--如果臨時表已經存在,先刪除它

if object_id(@tbname) is not null exec('drop table '+@tbname)

--假設表的主鍵欄位名為: id

exec('select nnid=identity(bigint,0,1),* from(

select top 100 percent id from xiaofei

where status=1

order by newid())a')

set @currentpage=1

end--根據需要查詢指定頁的資料

declare @s nvarchar(4000)

set @s='select a.* from xiaofei a,'+@tbname+' b

where a.id=b.id

and b.nnid between (@currentpage-1)*@pagesize+1

and @currentpage*@pagesize'

exec sp_executesql @s,n'@currentpage int,@pagesize int',@currentpage,@pagesize

隨機排序分頁處理示例

處理要求 用如下語句可以實現隨機排序 select from xiaofei where status 1 order by newid 這樣的話每次使用者重新整理頁面排序就會變.現在我想做成不同使用者進來頁面看到的排序都不一樣,但是同乙個使用者在一段時間內每次重新整理頁面看到的排序都是一樣的 go...

隨機排序分頁處理示例

處理要求 用如下語句可以實現隨機排序 select from xiaofei where status 1 order by newid 這樣的話每次使用者重新整理頁面排序就會變.現在我想做成不同使用者進來頁面看到的排序都不一樣,但是同乙個使用者在一段時間內每次重新整理頁面看到的排序都是一樣的 go...

隨機排序分頁處理示例

處理要求 用如下語句可以實現隨機排序 select from xiaofei where status 1 order by newid 這樣的話每次使用者重新整理頁面排序就會變.現在我想做成不同使用者進來頁面看到的排序都不一樣,但是同乙個使用者在一段時間內每次重新整理頁面看到的排序都是一樣的 go...