[英]Select distinct by highest or lowest value
我正在研究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)。 除了首先创建临时表之外,还有一种简单的方法,首先排序结果,然后在临时表上执行选择吗?
您可能对以下group by
感兴趣:
SELECT name, min(result) as result
FROM results
WHERE event = 40
GROUP BY name
这为每位运动员提供最佳结果。
正如spencer建议的那样,您还可以通过附加以下内容来订购列表:
ORDER BY min(result) ASC
问题是ORDER BY
中使用的列未在DISTINCT
指定。 为此,您需要使用聚合函数进行排序,并使用GROUP BY
使DISTINCT
正常工作。
SELECT distinct name, event
FROM results
WHERE event = 40
GROUP BY name
ORDER by result DESC
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.