2016-07-06 8 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

に「名前」を追加グループを選択するかmax(name)を選択してください – Kostya

+0

あなたのしていることややろうとしていることはほとんど分かりません。しかし、一般的にSELECT句に現れる集約されていない列もGROUP BY句に含める必要があります。 – Strawberry

+0

ありがとうございました – silentshadow

答えて

0

秒あなたもあなたべきグループによる

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

に名前を付ける]を選択しますので、

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

によってクエリが正しくグループではありません参加が、これはあなたに別の結果を与える

+0

ありがとう:)それは働いた – silentshadow