Använda en korrelerad fråga:
SELECT t.id,
t.count,
(SELECT SUM(x.count)
FROM TABLE x
WHERE x.id <= t.id) AS cumulative_sum
FROM TABLE t
ORDER BY t.id
Använda MySQL-variabler:
SELECT t.id,
t.count,
@running_total := @running_total + t.count AS cumulative_sum
FROM TABLE t
JOIN (SELECT @running_total := 0) r
ORDER BY t.id
Obs:
JOIN (SELECT @running_total := 0) r
är en korskoppling och tillåter variabeldeklaration utan att kräva en separatSET
kommando.- Tabellaliaset,
r
, krävs av MySQL för varje underfråga/härledd tabell/inlinevy
Varningar:
- MySQL-specifik; inte portabel till andra databaser
ORDER BY
är viktigt; det säkerställer att ordningen matchar OP och kan ha större konsekvenser för mer komplicerad variabelanvändning (IE:psuedo ROW_NUMBER/RANK-funktionalitet, som MySQL saknar)