日期:2014-05-16  浏览次数:21201 次

如何高效查找周数据中的TOP10数据
问题是这样的

数据表为

游戏ID     用户ID     上传分数   上传时间

每周都有不同的用户对不同的游戏上传自己游戏的分数

要求找出每周每个不同游戏中的分数最高的前10名的记录

请问如何高效的查找呢?

谢谢

------解决方案--------------------
try:

select 游戏ID,用户ID,上传分数 from table
where datediff(now(),上传时间) <=7 and 游戏ID= 'wow '
order by 上传分数 desc
limit 0,10
------解决方案--------------------
select 游戏ID,用户ID,上传分数 from table
where 上传时间 > unix_timestamp(now()) - 7 * 24 * 3600 and 游戏ID= 'wow '
order by 上传分数 desc
limit 0,10

查询最近7天的wow的积分最高的10个用户。

当然如果你要查询确切的一周的 并且 不在 周末的最后时刻查询那么最好 动态生成 sql
select 游戏ID,用户ID,上传分数 from table
where 上传时间 > unix_timestamp( "周一零点 ") and 上传时间 < unix_timestamp( '周末24点 ')and 游戏ID= 'wow '
order by 上传分数 desc
limit 0,10