【问题标题】:Sum up columns using group by and store as a new column (permanently) in MySQL使用 group by 汇总列并存储为 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`+    

我正在尝试上述触发器,但无法正常工作。 我应该在表中插入一个空白列并执行触发器吗?哪个触发器是正确的?

【问题讨论】:

    标签: mysql sql mysql-workbench


    【解决方案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 版开始支持生成的列
    • 是的,更新版本不在我手中:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-12
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 2015-06-28
    • 1970-01-01
    相关资源
    最近更新 更多