对于下面的查询,我希望能够在最终结果中显示在嵌套 Select 中选择的每个玩家的完整玩家名称。我知道如何连接适当的字段:CONCAT (nameFirst, ' ', nameLAST) AS 'playerName'
以及将其放在第一个 SELECT
中的位置。 nameFirst 和 nameLast 都在 Master 表中。关键字段 playerID
在 Batting 和 Master 表中。我不知道的是我需要添加到下面的查询中,以获得在特定赛季中击出最多本垒打的每个大都会队的全名。
SELECT b.*
FROM Batting b JOIN
(SELECT yearID, teamID, MAX(HR) as maxHR
FROM Batting
WHERE teamID = 'NYN'
GROUP BY yearID, teamId
) bb
ON bb.yearId = b.yearId and bb.teamId = b.teamId and bb.maxHR = b.HR;
最佳答案
连接应该是 INNER JOIN 以确保您只选择具有 max(HR) 的记录 - 如果有多个具有相同 max(HR) 的玩家,他们都会出现。然后你应该 LEFT JOIN 主表来获取玩家的名字:
SELECT b.*, CONCAT (m.nameFirst, ' ', m.nameLAST)
FROM Batting b
INNER JOIN
(SELECT yearID, teamID, MAX(HR) as maxHR
FROM Batting
WHERE b.teamID = 'NYN'
GROUP BY yearID, teamId
) bb
ON bb.yearId = b.yearId
and bb.teamId = b.teamId
and bb.maxHR = b.HR
LEFT JOIN Master m
ON b.playerID = m.playerID
ORDER BY b.yearID desc;
关于mysql - 将 JOIN 添加到 MySQL 中的嵌套 Select,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31657955/