免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1686 | 回复: 1
打印 上一主题 下一主题

如何标记选出的记录集合中,每条记录的位置 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-05-31 23:26 |只看该作者 |倒序浏览
开门见山,有如下两张表:
Table a
{
   id int(11) auto_increment,
   statisDay date,
   softName varchar(20) not null,
   downloadCount int(11) not null, # 下载量
   Primary key (statisDay, softName),
   Unique key (id)
}
每天会向表a中插入N条记录,N不固定。
Table b
{  
   id int(11) auto_increment,
   statisDay date,
   softName varchar(20) not null,
   searchCount int(11) not null, # 搜索量
   Primary key (statisDay, softName),
   Unique key (id)
}
每天会向表b中插入N条记录,N也不固定。

万能的cu,我想用以下的形式把两张表中每天的Top10 记录展示出来,sql怎么写呢?

a.statisDay,  a.softName,  a.downloadCount,  b.softName, b.searchCount
2010-05-30   aaaaa          987987         bbbb      99999
2010-05-30   ccccc             987000        dddd      99966
2010-05-30   eeeee          986387         ffffff      99944

最终的记录中,表a中softName和表b的softName不一定相同。
我的思路是:每天选出两张中的前10条记录,但是得在这10条记录前面标记上每条记录的位置排名,然后用日期和记录的位置排名来join得到最终的结果。可是如何能标记选出来的记录其位置排名呢?

论坛徽章:
0
2 [报告]
发表于 2010-06-01 16:37 |只看该作者
select t.*,@rn:=if(@tt>total,@rn+1,@rn) as rn, @tt:=t.`total`
from (select page , pv as `total` from   module_page_statis where statisDay='2010-05-31' and module='new_info' order by 2 desc  limit 10) t,
(select @rn:=1,@tt:=0) t2 order by t.`total` desc

自问自答一下吧,用上面这种写法,可以搞定这个问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP