我的表格看起来像:
ID | a | b | sth_CH | sth_DD | sth_FF | ...
1 | xx | yy | 1 | 5 | 3 | ...
2 | xy | yx | 3 | 1 | 6 | ...
在那里你可以看到我可以有其他列(越来越多)称为 sth_XX ...
问题:
如何对第四列(sth_CH
)到最后一列的值求和?
我们可以假设我不知道列名,但我知道它从“sth_”开始(但我认为这是没有必要的)。
我想要类似 SUM(4,table.columns.count)
的值,并对从第四列到最后一列的所有值进行求和。
对于 SUM(4,6)
我想要返回:
9
10
最佳答案
我也同意你应该标准化你的数据模型。但如果您无法做到这一点,这个脚本可以完成这项工作:
set @a := ' ';
select @a := concat(@a, COLUMN_NAME, ' + ')
from INFORMATION_SCHEMA.COLUMNS
where TABLE_SCHEMA ='your schema'
and TABLE_NAME='your table'
and column_name not in ('ID', 'a', 'b');
set @a := LEFT(@a, length(@a) -2);
set @sql := concat('select ', @a, ' from <your table> where ...');
prepare stmt from @sql;
execute stmt;
deallocate prepare stmt;
编辑:我后来明白不需要聚合,您需要添加列值。从代码中删除了聚合函数“sum”。 附:如果解决了您的问题,请标记为答案。
关于mysql - mysql中最新列的总和部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32168455/