2016-07-06 60 views
0

该工作的区别:问题与自我有一个子查询加盟;想知道2个查询下面

SELECT a.year, a.name, a.runs 
from players a JOIN 
    (SELECT year, max(runs) runs FROM players GROUP BY year 
    ) b 
    ON (a.year = b.year AND a.runs = b.runs); 

这不是工作:

select a.name,b.year,b.run 
from players a join 
    (select year, max(runs) as run, name from players group by year 
    ) b 
    on a.year = b.year AND a.runs = b.run; 

有人可以plz帮助我理解这一点?

+1

加上“名”来在选择 – Kostya

+0

中选择使用max(姓名)我们很少知道你在做什么/试图做什么,所以我们不能真正帮助。但通常,SELECT子句中出现的非聚合列也需要包含在GROUP BY子句中。 – Strawberry

+0

Thankyou .got it – silentshadow

回答

0

第二加入查询不正确组由

 (select year, max(runs) as run, name from players group by year 
) b 

,因为你选择也name应该按

 (select year, max(runs) as run, name from players group by year, name 
) b 

但是这会给你不同的结果

+0

谢谢:)它工作 – silentshadow