mysql累积相同字段值的总和

时间:2017-01-08 05:04:23

标签: mysql sql

我有表名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

1 个答案:

答案 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

的总和