我希望从表中获取所有唯一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做到这一点?
答案 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
不承诺表现会很好:)
根据数据集的大小以及运行它的频率(一次或多次),您可能希望将联合存储在临时表或永久表中,然后对其执行汇总。
如果您需要经常这样做,您可能还需要考虑更改表架构或仅存储并行规范化副本。