我正在使用MySQL / PHP5建立一个田径排名数据库,因此我正在努力寻找最佳方法来按最高价值查询每位独特运动员的成绩.
只是
SELECT distinct name, event
FROM results
样本数据库
name | event | result
--------------------------
athlete 1 | 40 | 7.43
athlete 2 | 40 | 7.66
athlete 1 | 40 | 7.33
athlete 1 | 60 | 9.99
athlete 2 | 60 | 10.55
因此,假设在这种情况下,我想根据我尝试的最佳表现来对40m短跑比赛的运动员进行排名
SELECT distinct name, event
FROM results
WHERE event = 40
ORDER by result DESC
但是唯一选项仅留下运动员的第一项成绩(7.43),而不是最佳成绩(7.33).除了首先创建临时表(首先对结果进行排序,然后对临时表执行选择)之外,还有其他简便的方法吗?
解决方法:
您可能对分组依据感兴趣:
SELECT name, min(result) as result
FROM results
WHERE event = 40
GROUP BY name
这样可以使每个运动员获得最佳成绩.
如spencer所建议,您还可以通过添加以下命令来排序列表:
ORDER BY min(result) ASC