mysql - 将 JOIN 添加到 MySQL 中的嵌套 Select

标签 mysql

对于下面的查询,我希望能够在最终结果中显示在嵌套 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/

相关文章:

php - 关于 "mysql result"资源

当我尝试编写插入语句时 PHP 语法错误

MySQL LAST_INSERT_ID() 与 INSERT INTO 表 SELECT FROM 表

mysql - 使用sql联合子查询的组合来处理AND/OR条件的组合以进行客户过滤

mysql - ALTER TABLE ADD COLUMN 需要很长时间

mysql - 连接表时如何使用案例条件

mysql - #1005 - 无法创建表 'disertation.#sql-d38_40'(错误号 : 150)

mysql - 根据 table3.argument3 的值更新 table1.argument1

mysql - SQL 如何通过 INNER JOIN 更新 -

Mysql比较并更新表如果有匹配