随机排序分页处理示例

原创 2005年03月16日 09:18:00

/*--原帖地址:
http://community.csdn.net/Expert/topic/3845/3845647.xml?temp=.7272455
--*/

/*--处理要求

用如下语句可以实现随机排序:
select * from xiaofei where status=1 order by newid()

这样的话每次用户刷新页面排序就会变.
现在我想做成不同用户进来页面看到的排序都不一样,但是同一个用户在一段时间内每次刷新页面看到的排序都是一样的
--*/
go

/*--处理分析

借助临时表缓存排序结果,再结合原表主键查询数据就可以了
--*/

--大致的处理存储过程
create proc p_qry
@username sysname,  --用户名,根据用户名来设定排序处理的临时表
@pagesize int=5,    --每页大小
@currentpage int=1  --当前页,>=1表示正常查询,<1表示重建临时表
as
set 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

mysql中排序再分页遇到的重复数据

用一个简单实例,对遇到的问题复盘一下。   1.新建测试表 test_ordercreate table test_order( id int(11) not null auto_increme...
  • zxdfc
  • zxdfc
  • 2016年11月30日 22:50
  • 2249

mysql 5.6 order by limit 排序分页数据重复问题

select * from table order by xx limit 0,10 当xx不存在索引,且有xx相同的行是,可能出现分页数据重复问题 原因:                   ...

在 MySQL中,从10 万条主键不连续的数据里随机取 3000 条,如何做到高效?

看到知乎上有人提问 几百万记录的表,每天大概有10万条记录发生更新,从这10万条里随机取3000条做数据分析, select id from table where date_refresh =...

SQL分页排序的实现与分页数据重复问题——以Oracle rownum为例

对于关系数据库来说,直接写SQL拉数据在列表中显示是很常用的做法。但如此便带来一个问题:当数据量大到一定程度时,系统内存迟早会耗光。另外,网络传输也是问题。如果有1000万条数据,用户想看最后一条,这...
  • huzgd
  • huzgd
  • 2011年02月21日 00:28
  • 6966

数据库分页查询技术以及实现查询随机数

数据库分页和随机查询

php获取客户端IP和服务器端IP

1.php获取客户端IP 在PHP获取客户端IP时,常使用 $_SERVER["REMOTE_ADDR"] 。但如果客户端是使用代理服务器来访问,那取到的是代理服务器的 IP 地址,而不是真正的客...

php获取外网和内网的ip地址

class Action {     function get_outer()     {         $url = 'http://www.ip138.com/ip2city.a...

JS Datatables插件server-side方式处理分页的示例代码段

演示如何使用Datatables插件实现后台分页的代码段。

ASP.NET 2.0数据处理之高级分页与排序

GridView控件中的"选择"操作纯粹是一个UI概念,它的SelectedIndex属性与表格的可视数据行中的当前被选中的行的索引相对应。如果你启用了表格的分页和排序功能,在执行分页或排序操作之后,...

magento分页排序插件

  • 2015年09月07日 08:57
  • 239KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:随机排序分页处理示例
举报原因:
原因补充:

(最多只允许输入30个字)