-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);
上述查詢之間的唯一不同的是,第二個查詢有一個更選擇字段s.pts Points
,其給出了結果集複製PlayerID
。 我想知道爲什麼distinct
不適用於所有情況。有什麼我誤解了嗎?顯示
重複的行如下:
pts存在於t和s表中。 –
正確,但我認爲s包含多個記錄,因爲您選擇的是t中的最大值。 – hisnameismyname2
是的,s確實包含多條記錄。但我已經明確了爲什麼它不起作用? –