使用 group by 汇总列并存储为 MySQL 中的新列(永久)
Posted
技术标签:
【中文标题】使用 group by 汇总列并存储为 MySQL 中的新列(永久)【英文标题】:Sum up columns using group by and store as a new column (permanently) in MySQL 【发布时间】:2020-05-18 15:46:53 【问题描述】:我的 mysql 表中有 50 列。我想对所有这些列求和,并在同一个表中创建一个新列(sum50)。 每当我更新或插入新数据时,这应该永久存储到 MySQL 表中。 我知道如何在执行查询时进行总结,但它不会永久存储到表中。
CREATE TRIGGER `name`
AFTER INSERT ON `table`
FOR EACH ROW
UPDATE `table` SET `table`.`coulms` = `table`.`col1`+.... `table`.`col50`+
我正在尝试上述触发器,但无法正常工作。 我应该在表中插入一个空白列并执行触发器吗?哪个触发器是正确的?
【问题讨论】:
【参考方案1】:将generated column 添加到您的表中,而不是触发器:
alter table tablename add(sum50 int generated always as (col1 + col2 + ...) stored);
查看简化的demo。
【讨论】:
它说意外生成。会不会是不同版本的语法不一样? 你的MySql是什么版本的? SQL Server:“5.6.24”工作台 6.3 您使用的是非常旧的 MySql 版本,现在是 8.0 版。从 5.7 版开始支持生成的列 是的,更新版本不在我手中:(以上是关于使用 group by 汇总列并存储为 MySQL 中的新列(永久)的主要内容,如果未能解决你的问题,请参考以下文章