Możesz to zrobić, dołączając do samego stołu. Suma sumuje wszystkie wiersze do tego wiersza:
select cur.id, sum(prev.val)
from TheTable cur
left join TheTable prev
on cur.id >= prev.id
group by cur.id
MySQL umożliwia również użycie zmiennych użytkownika do obliczenia tego, co jest bardziej wydajne, ale uważane za coś w rodzaju hacka:
select
id
, @running_total := @running_total + val AS RunningTotal
from TheTable