获取唯一ID同时获取每个id的值的总和

时间:2014-06-05 01:39:14

标签: mysql sql

我希望从表中获取所有唯一ID,并为每个唯一ID获取value_1到value_640的值之和。 表结构:

ID_col_1  Value_1  ID_col_2  Value_2  ID_col3  Value_3  ....  ID_col_640  Value_640        
10001       2       10007      1       10004      1             10010        1        
10003       3       10001      3       10005      0             10020        2        
10005       4       10006      4       10011      0             10001        8        
10001       10      10009      8       10007      2             10017        3        
10009       0       10004      1       10001      3             10018        10        
10002       2       10001      0       10008      4             10009        7

我想结果如下例: EXP:

 10001=2+1+3+0+3....+8
 10002=...
 10003=...
 10004=...
 10005=...
 ...
 10020=...

有没有办法用mysql做到这一点?

1 个答案:

答案 0 :(得分:0)

你可以这样做(我建议以编程方式生成完整的表达式):

select id, sum(val) from
    (
    select ID_col_1 as id, Value_1 as val from tbl
    union
    select ID_col_2 as id, Value_2 as val from tbl
    ...
    union
    select ID_col_640 as id, Value_640 as val from tbl
    )
group by id

不承诺表现会很好:)

根据数据集的大小以及运行它的频率(一次或多次),您可能希望将联合存储在临时表或永久表中,然后对其执行汇总。

如果您需要经常这样做,您可能还需要考虑更改表架构或仅存储并行规范化副本。