-1
讓我解釋我的查詢。它總結每個球員的最佳5個分數,並且比這些分數的排名更高。第一個查詢是可行的,但是當我添加一個玩家表來添加玩家的全名時,它會加擾總和,並且每個玩家的總數是不正確的。當表連接查詢訂單加擾
這個查詢給出每個玩家的好總分:
SET @score_rank := 0;
SET @current_player = '';
SET @topN = 5;
Select ATLEET_ID as ID, SUM(SCORE) as SUMSUM
From (Select r.ATLEET_ID, r.SCORE, k.SEASON, k.TYPE,
@score_rank := IF(@current_player = r.ATLEET_ID, (@score_rank + 1), 1) AS score_rank,
@current_player := r.ATLEET_ID
From RESULTATEN r LEFT JOIN KALENDER k ON (r.KALENDER_ID = k.KALENDER_ID)
Where k.TYPE = 'Cup' AND k.SEASON = '2016-2017'
Order By r.ATLEET_ID, r.SCORE DESC) sorted
Where score_rank <= @topN
Group By ID;
但這一次給出了每個玩家的錯總:(加盟球員表)
SET @score_rank := 0;
SET @current_player = '';
SET @topN = 5;
Select ATLEET_ID as ID, SUM(SCORE) as SUMSUM
From (Select r.ATLEET_ID, r.SCORE, k.SEASON, k.TYPE,
@score_rank := IF(@current_player = r.ATLEET_ID, (@score_rank + 1), 1) AS score_rank,
@current_player := r.ATLEET_ID
From RESULTATEN r LEFT JOIN KALENDER k ON (r.KALENDER_ID = k.KALENDER_ID) JOIN PLAYERS s ON (r.ATLEET_ID = s.PLAYER_ID)
Where k.TYPE = 'Cup' AND k.SEASON = '2016-2017'
Order By r.ATLEET_ID, r.SCORE DESC) sorted
Where score_rank <= @topN
Group By ID;
我不明白是什麼導致錯誤計算或爲什麼會發生這種情況。
如果您想按特定順序得到結果,則需要在最外面的SELECT中包含一個ORDER BY。期。 –
您的LEFT JOIN以常規INNER JOINs的形式執行...將右側表格的條件從WHERE移動到ON,以獲得true LEFT JOIN結果! – jarlh