-1
以下のクエリで複数のテーブルを選択できます。一部の選択フィールドでdistinctが機能しない
select distinct s.playerId PlayerID, h.name TeamName,
m.firstname FirstName, m.lastname LastName, h.year Year
from scoringnew s
join
(select max(s.pts) pts,s.tmid from scoringnew s group by s.tmid) t
on s.tmid = t.tmid and s.pts = t.pts
join master m on (m.playerId = s.playerId)
join ice_hockey_teams_new h on (h.tmid = s.tmid);
結果には別個のPlayerID
が正しく表示されています。私は選択に複数の列を追加する場合しかし、それはPlayerID
重複下記のように表示されます:
select distinct s.playerId PlayerID, h.name TeamName,
m.firstname FirstName, m.lastname LastName, h.year Year, s.pts Points
from scoringnew s
join
(select max(s.pts) pts,s.tmid from scoringnew s group by s.tmid) t
on s.tmid = t.tmid and s.pts = t.pts
join master m on (m.playerId = s.playerId)
join ice_hockey_teams_new h on (h.tmid = s.tmid);
上記のクエリの間だけ異なるが2番目のクエリは、結果セットにPlayerID
を複製できますもう一つの選択フィールドs.pts Points
を持っているということです。 私はなぜdistinct
がすべての場合に機能しないのだろうと思います。それについて私が誤解していることはありますか?
重複行は以下のように:
ptsはtテーブルとsテーブルの両方に存在します。 –
正解ですが、sの中にmaxを選択しているので、sに複数のレコードが含まれていると仮定します。 – hisnameismyname2
はい、複数のレコードが含まれています。私はそれがなぜ機能しないのかを明確にしましたか? –