繁体   English   中英

按最高或最低值选择不同

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM