我有一个数据表 数据库表看起来像
id | name | userid | score | date |
------------------------------------------------------------
1 | john | 4 | 233 | 2014-02-02
2 | mary | 5 | 1256 | 2013-02-05
3 | john | 6 | 100 | 2013-03-08
4 | elvis | 7 | 123 | 2013-03-04
5 | john | 2 | 1234 | 2013-03-02
现在我想显示每个月最高得分者的详细信息。我的检索数据输出将是 json 格式
当前我的查询输出显示
"monthly_winners":[
{
"id":"1",
"score":"233",
"month":"Feb"
},
{
"id":"3",
"score":"100",
"month":"Mar"
}
],
但是会的
"monthly_winners":[
{
"id":"2",
"score":"1256",
"month":"Feb"
},
{
"id":"5",
"score":"1234",
"month":"Mar"
}
],
我无法理解我的查询出了什么问题
我的查询是
SELECT id,score, DATE_FORMAT(`date`,'%b' ) AS month FROM `winner` GROUP BY month ORDER BY score DESC
最佳答案
SELECT x.*
FROM my_table x
JOIN
( SELECT DATE_FORMAT(date,'%Y%m')yearmonth
, MAX(score) max_score
FROM my_table
GROUP
BY DATE_FORMAT(date,'%Y%m')
) y
ON y.yearmonth = DATE_FORMAT(x.date,'%Y%m')
AND y.max_score = x.score;
关于php - 想要显示按月分组的得分最高者的详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22354077/