MYSQL初学者ORDER By - 只希望列中每个条目的MAX值

时间:2016-03-21 20:10:23

标签: mysql

我正在尝试学习MYSQL,因此我可以进行自己的棒球研究。到目前为止,我已经取得了成功,但看起来似乎是一个简单的查询很难,我似乎无法找到解决方案。

我试图编写一个查询,让我们每年都能获得最多人力资源。我的代码是:

SELECT 
    playerID, teamID, 
    yearID AS Year,
    MAX(HR) AS MaxHR
FROM
    Batting
GROUP BY 
    yearID, playerID, teamID
ORDER BY 
    yearID DESC, MAXHR DESC;

这接近我想要的,但按时间顺序按时间顺序给我每个玩家,而不仅仅是#1,然后是第二年。我确定我错过了一些明显的东西。

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

您应该使用子选择来获取年份ID和HR

SELECT playerID, 
       teamID, 
       yearID AS Year,
       HR AS MaxHR
      FROM Batting
WHERE (yearID, HR) in (select yearID, max(hr) 
                         from batting group by yearID)
ORDER BY yearID DESC, MAXHR DESC;

答案 1 :(得分:1)

除了使用子查询之外,您还可以将表连接到自身以获得所需的结果。

SELECT a.playerID, a.teamID, a.yearID as YEAR, a.HR AS MAXHR
FROM Batting a LEFT JOIN Batting b
ON a.yearID = b.yearID and a.HR < b.HR 
WHERE b.HR IS NULL;

这基本上只是将表连接到自身,其中年份相等,左手表中的行没有来自右手(连接表)的更高运行率。