Mysql 引发错误的派生联接和聚合函数

Mysql 引发错误的派生联接和聚合函数,mysql,sql,Mysql,Sql,我陷入了一个疑问。我有两个表player和player_属性,player_api_id作为主键 我需要找到最年轻、最老的球员,以及最老、最年轻球员的平均总评分 查询以写入最年轻和最老的玩家: select player_name, birthday,YEAR(CURDATE()) - YEAR(birthday) as age from player where birthday=(select max(birthday) from player) or birthday=(select m

我陷入了一个疑问。我有两个表player和player_属性,player_api_id作为主键

我需要找到最年轻、最老的球员,以及最老、最年轻球员的平均总评分

查询以写入最年轻和最老的玩家:

select player_name, birthday,YEAR(CURDATE()) - YEAR(birthday) as age from player where 
birthday=(select max(birthday) from player)
or
birthday=(select min(birthday) from player) 
查询所有玩家的平均总评分:

SELECT player_api_id, avg(overall_rating) as avg_score,
FROM (
  SELECT player_api_id, overall_rating FROM player_attributes 
) as p
GROUP BY player_api_id;
加入时出错:

select player_api_id, avg(overall_rating),min(birthday),max(birthday) as avg_score
FROM (
  SELECT player_api_id, overall_rating FROM player_attributes
) as p
join
(select birthday from player) as p1
on p.player_api_id=p1.player_api_id
GROUP BY player_api_id;

我现在很困惑???

没有理由只使用子查询来选择列。事实上,在MySQL中,这是一个非常非常糟糕的想法——因为MySQL实现了子查询

所以,只要做:

select pa.player_api_id, avg(overall_rating) as avg_score,
       min(p.birthday), max(p.birthday)
from player_attributes pa join
     player p 
     on pa.player_api_id = p.player_api_id
group by pa.player_api_id;

我不确定其余的逻辑是否正确。但这至少可以修复语法错误。

p1
没有名为
player\u api\u id
p1
没有
player\u api\u id
列。