我有表名catdog
| No | id | data |
1 1 4000
2 2 300
3 3 100
4 1 400
5 2 30
6 3 10
7 1 40
8 2 3
9 3 1
我想要这样的结果:
| No | id | data | totaldata |
1 1 4000 4000
2 2 300 300
3 3 100 100
4 1 400 4400 --------> 4000 + 400 on id
5 2 30 330 --------> 300 + 30 on id
6 3 10 110 --------> 100 + 10 on id
7 1 40 4440 --------> 4000 + 400 + 40 on id
8 2 3 333 --------> 300 + 30 + 1 on id
9 3 1 111 --------> 100 + 10 + 1 on id
如果字段No相同则求和。 如何为我的案例编写mysql查询?
非常非常感谢你GurV答案 0 :(得分:1)
试试这个:
select no, id, data, c_data from (
select t1.*,
@data := case when @id = id then @data + data else data end c_data,
@id := id
from
(select * from catdog
order by id, No) t1
cross join (select @id := -1, @data := 0) t2) t
order by no;
它使用用户定义的变量来跟踪每个id
的总和