mysql求游戏排名
问题描述
问题解答
回答1:select user_id,a.sc,min(created_at) tm from (select user_id,max(score) sc from active_gamescore group by user_id) a join active_gamescore b on a.user_id=b.user_id and a.sc=b.score group by a.user_id,a.sc order by a.sc desc,tm asc limit 20;回答2:
select t.userid,t.score from (select * from active_gamescore order by score desc,created desc) as t group by t.userid limit 20;
回答3:更新:一个人只能回复一次,很忧伤感谢几位抽出时间去帮我解题测试了一下(5次平均)
在1w数据量的情况下,@clcx_1315 :0.004s@伊拉克 : 0.009s@邢爱明 :0.006s我自己的 :0.016s
在20w的数据量下:@clcx_1315 :0.104s@伊拉克 : 0.141s@邢爱明 :0.165s我自己的 :0.171s
所以@clcx_1315的方法最优,十分感谢,学到了一个思路。从explain看,@clcx_1315的写法只做了2次全表遍历,其他都是3次,或许这就是原因了。
===========================之前的分隔线============================琢磨了一种写法,但效率有待提高
select ta.user_id,ta.max_score,tb.min_timefrom (select a.user_id, max(a.score) max_score from active_gamescore a where a.active_id=’58’ group by a.user_id) tajoin (select a.user_id,a.score,min(a.created_at) min_time from active_gamescore a where a.active_id=’58’ group by a.user_id,a.score) tb on ta.user_id=tb.user_id and ta.max_score=tb.scoreorder by ta.max_score desc,tb.min_time asc limit 20回答4:
假设同一用户下的created_at字段值不重复,可以试试下面的语句:
SELECT t1.user_id, t1.score, t1.created_atFROM (SELECT @row_num:=IF(@prev_col1=t.user_id, @row_num+1, 1) AS row_number, t.*, @prev_col1:=t.user_idFROM (SELECT * FROM active_gamescore ORDER BY user_id, score DESC, created_at) t, (SELECT @row_num:=1, @prev_col1:=NULL) var) t1 WHERE row_number = 1ORDER BY t1.score DESC, t1.created_atLIMIT 20回答5:
SELECT yws0.user_id, yws0.score, min(create_time) AS create_timeFROM active_gamescore yws0WHERE (user_id, score) IN (SELECT yws.user_id, yws.max_scoreFROM (SELECT user_id, max(score) AS max_scoreFROM active_gamescoreGROUP BY user_id ) yws )GROUP BY yws0.user_id, yws0.scoreORDER BY SCORE DESCLIMIT 3
相关文章:
1. node.js - npm安装模块时,在cmd上显示的是一条白线,白线前面是一天反斜线转圈圈,然后就出现npm ERR错误了,求帮助,谢谢2. 求救一下,用新版的phpstudy,数据库过段时间会消失是什么情况?3. node.js - npm run dev报错4. mysql - 仅仅只是把单引号与反斜杠转义不用prepare statement能否避免sql注入?5. javascript - 如何将一个长为365的数组对象按月份切割成12组?6. 无法为JSP编译类:无法解析类型java.util.Map $ Entry。从所需的.class文件间接引用它7. PC 手机兼容的 编辑器8. html - angularJS中switch切换开关按钮不能操作9. angular.js - Angular 像这种重复判断的表达式 有什么好的解决办法吗?~10. css3不包括

网公网安备