- 總是初始化用戶變量,它們默認否則爲NULL。
SET @prevID:[email protected]:=0;
UPDATE teamrank t -- one row per team?
JOIN members m USING (teamID) -- multiple rows per team?
SET rank =
IF(@prevID != m.teamID, /* Capture when a teamIDs changes */
(@runSum := m.rank) + ((@prevID := m.teamID)*0), /* reset both @runSum and @prevTeam */
(@runSum := @runSum + m.rank) /* increment running sum */
)
-- It is important to have proper sequencing, so to reset @runSum when a teamID changes.
ORDER BY t.teamID
;
我做出了一個假設,即執行團隊排名所需的邏輯是團隊內個人的排名總和。
同樣的技術允許執行任何類型的運行總和或計數器,當「組」更改時需要重置。
- J Jorgenson -
對不起。我最終在「IF」中重置了它。你說得對,'ORDER'對於這個工作很重要。 – 2010-11-04 02:47:58