本帖最后由 TeliuTe 于 2014-3-4 10:20 编辑
数据表pre_app_zflx结构如下,各个会员有多行记录, 第一条是最高分记录:
id uid name score time
11 1 admin 90 1385584217
12 1 admin 66 1386896678
13 1 admin 76 1386897888
14 2 admi 50 1385584108
15 2 admi 32 1386899988
16 2 admi 16 1386899999
现在想要挑出每个会员最近40分钟内分数(score)最高的一行,得到类似:
id uid name score time
13 1 admin 76 1386898888
15 2 admi 32 1386899988
以前是每个用户一条记录, 用下面就可以挑出来, 现在用户有多个记录, 还得先挑出最大的来
- $query = DB::query("SELECT $query = DB::query("select * from ".DB::table('app_zflx')." WHERE time > ".$tmptime." ORDER BY score DESC,gtime ASC");
复制代码 请教解决方法, 或好的思路
=======解决======================
- $tmptime = TIMESTAMP-2400;//当前时间减去40分钟
- $query = DB::query("SELECT `username`, `score_now`, `title_now`,`time_now` FROM ".DB::table('app_zflx_rk')." WHERE `time_now`>" .$tmptime. " ORDER by `score_now` DESC, `time_now` DESC");
- $i=1;//显示的时候,排名是从1开始
- while ($value = DB::fetch($query)) {
- $value ['time_now'] = dgmdate($value['time_now'], 'dt', $_G['setting']['timeoffset']);
- $my_score[$i] = $value;//转存到一个二维数组变量lessontopArr
- $i++;
- }
复制代码
|