无法用言语解释我的问题,但举个例子我可以清楚地说明:
我有一张这样的表:
id num val flag
0 3 10 1
1 5 12 2
2 7 12 1
3 11 15 2
我想要遍历所有行,并计算" num"的增加,并将该差值乘以" val"值。当我计算所有这些时,我想将这些结果一起添加,但是基于"标记"值。
这是我想在桌子上运行的数学方程式:
Result_1 = (3-0)*10 + (7-3)*12
Result_2 = (5-0)*12 + (11-5)*15
78 = Result_1
150 = Result_2
谢谢。
答案 0 :(得分:2)
有趣的问题。很遗憾,MYSQL
不支持recursive queries
,因此您需要在这里有点创意。这样的事情可以奏效:
select flag,
sum(calc)
from (
select flag,
(num-if(@prevflag=flag,@prevnum,0))*val calc,
@prevnum:=num prevnum,
@prevflag:=flag prevflag
from yourtable
join (select @prevnum := 0, @prevflag := 0) t
order by flag
) t
group by flag