을 - 항상 사용자 변수를 초기화, 그들은 그렇지 않으면 디폴트로 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 안에서 그것을 다시 끝내었다. 당신 말이 맞아요, '주문'이 제대로 작동하려면 중요합니다. –