任何人都知道如何获得与每个游戏的最高得分相对应的日期_每个级别请:
----------------------------------------
|id |game_id |level |score |date |
----------------------------------------
|1 |0 |1 |90 |1391989720 |
|1 |0 |1 |95 |1391989721 |
|1 |1 |1 |4 |1391989722 |
|1 |1 |1 |8 |1391989723 |
|1 |1 |2 |6 |1391989724 |
----------------------------------------
谢谢大家,应该检查相关评论。此查询有效:
SELECT cdu_user_progress.game_id,
cdu_user_progress.level,
max_score,
cdu_user_progress.date
FROM
(
SELECT game_id, level, MAX(score) AS max_score
FROM cdu_user_progress
GROUP BY game_id, level
) AS ms
JOIN cdu_user_progress ON cdu_user_progress.game_id = ms.game_id AND
cdu_user_progress.level = ms.level AND
cdu_user_progress.score = ms.max_score
现在如果我还想获得第一个game_id(每个级别)和日期的分数,以获得此输出:
-----------------------------------------------------------------
|game_id |level |max_score |max_date |first_score |first_date |
-----------------------------------------------------------------
|0 |1 |95 |1391989721 |90 |1391989720 |
|1 |1 |8 |1391989723 |4 |1391989722 |
|1 |2 |6 |1391989724 |6 |1391989724 |
-----------------------------------------------------------------
谢谢!
答案 0 :(得分:0)
因为它是mysql,所以你可以简单地用这个来获得每场比赛得分最高的整行:
select * from (
select *
from cdu_user_progress
order by score desc) x
group by game_id
这是因为mysql非标准按功能分组,因此当不 all 非聚合列命名时,它返回每个组遇到的第一个行group by子句。