按最高或最低值选择不同

时间:2016-01-25 16:11:51

标签: php mysql distinct

我正在使用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

所以,让我们说在这种情况下,我想通过我尝试过的最佳表现对运动员进行40米短跑比赛的排名

SELECT distinct name, event
FROM results
WHERE event = 40
ORDER by result DESC

但不同的只留下了运动员的第一次表现(7.43)并不是最好的(7.33)。除了首先创建临时表之外,还有一种简单的方法,首先排序结果,然后在临时表上执行选择吗?

2 个答案:

答案 0 :(得分:4)

您可能对group by感兴趣:

SELECT name, min(result) as result
FROM results
WHERE event = 40
GROUP BY name

这为每位运动员提供了最佳结果。

根据spencer的建议,您还可以通过添加以下内容来订购列表:

ORDER BY min(result) ASC

答案 1 :(得分:-1)

问题是ORDER BY中未指定DISTINCT中使用的列。为此,您需要使用聚合函数进行排序,并使用GROUP BY使DISTINCT正常工作。

SELECT distinct name, event
FROM results
WHERE event = 40
GROUP BY name
ORDER by result DESC