Съгласен съм с @Ashalynd, стойността на count(*) все още не е оценена. Ето един малък експеримент, който направих:
<предварителен код>1. SELECT GROUP_ID, @COUNTER :=@COUNTER + COUNT(*) GROUPCOUNT, @COUNTER COUNTER FROM TEST_GROUP_CUMULATIVE, (SELECT @COUNTER :=0) R GROUP BY GROUP_ID;-- РЕЗУЛТАТ==============GROUP_ID GROUPCOUNT COUNTER ------------------------------------ 1 1 0 2 1 0 3 1 02. ИЗБЕРЕТЕ @БРОЯЧ; -- РЕЗУЛТАТ =============@COUNTER -------- 1За всяка група променливата се инициализира като 0. Това означава, че COUNT(*) все още не е оценен.
Освен това, когато го направите:
1. ИЗБЕРЕТЕ GROUP_ID, @COUNTER :=@COUNTER + 1 GROUPCOUNT, @COUNTER COUNTER FROM TEST_GROUP_CUMULATIVE, (SELECT @COUNTER :=0) R GROUP BY GROUP_ID;-- РЕЗУЛТАТ============GROUP_ID GROUPCOUNT COUNTER ------------------------------------ 1 1 1 2 1 2 3 1 32. ИЗБЕРЕТЕ @COUNTER; -- РЕЗУЛТАТ =============@COUNTER -------- 3
Не е необходимо да оценява 1. Той директно го сумира и ви дава кумулативната сума.