使用 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 中的新列(永久)的主要内容,如果未能解决你的问题,请参考以下文章

mysql group by 的用法,集合后取出指定的字段

MYSQL:SQL中Group By的使用

MySQL之分组查询(GROUP BY)

mysql的group by

尽管 sql_mode 为空白,但存储过程引发“与 sql_mode=only_full_group_by 不兼容”

聚合 MySQL 数据,正在使用 group by,但它并没有完全符合我的要求