假设我们有一个如下表
name | userid | score | datestamp |
-----------------------------------------------------
john | 1 | 44 | 2011-06-10 14:25:55
mary | 2 | 59 | 2011-06-10 09:25:51
john | 1 | 38 | 2011-06-10 21:25:15
elvis | 3 | 19 | 2011-06-10 07:25:18
...
marco | 4 | 100 | 2011-03-10 07:25:18
我想在每一天显示每个用户的高分。
所以对于eaxmple,如果玩家约翰在2001-06-10打了十轮,我想显示那天的最佳分数,以及其他玩家的等等。
非常感谢您的时间。
答案 0 :(得分:5)
SELECT name, MAX(score) AS hiscore, DATE(datestamp) AS sdate
FROM scores
GROUP BY userid, sdate
ORDER BY sdate DESC
但请注意,您的表格甚至不在first normal form中,因为它缺少唯一键。在修复之后,将重复播放器的名称,并且必须在另一个表格中提取第二个普通表格。
规范化设计将有两个表:
player(userid, name)
scores(scoreid, userid, score, datestamp)
答案 1 :(得分:2)
未经测试,但是怎么样?
select userid, max(score), date(datestamp) from table
group by userid, date(datestamp)