【问题标题】:Update Table with sum based on column value使用基于列值的总和更新表
【发布时间】:2025-12-21 18:45:05
【问题描述】:

我想根据另一列的值对一列的值求和。我的桌子是这样的:

|----------------------|-------------------|----------------|
|         col1         |       col2        |      result    |
|----------------------|-------------------|----------------|
|          a           |        5          |       12       |
|          a           |        7          |       12       |
|          b           |        9          |       209      |
|          b           |        200        |       209      |
|          c           |        56         |       56       |
|----------------------|-------------------|----------------|

结果列是预期的结果。因此,对于 col1=a 的每一行,col1 中 a 的 col2 中的值的总和将为 12。我想用更新和设置语句来做到这一点

这是我目前所拥有的:

    UPDATE Result o 
    INNER JOIN
    (
       SELECT col1, SUM(col2) sumcol
       FROM Result
       GROUP BY col1
    ) i ON o.col2 = i.col1
    SET o.result = i.sumcol

我很难找到正确的方法来执行此操作。我主要是遇到语法错误。我已经尝试过这个查询的不同变体(例如here),但到目前为止都没有。

提前致谢!

【问题讨论】:

标签: mysql


【解决方案1】:

试试这个修改后的查询:

UPDATE Result o
INNER JOIN (
    SELECT col1, SUM(col2) AS sumcol
    FROM Result
    GROUP BY col1
) i ON o.col1 = i.col1
SET o.result = i.sumcol

【讨论】:

    【解决方案2】:

    试试下面的查询:

    UPDATE Result o1 SET o1.result = (
         SELECT SUM(o2.col2) sumcol
         FROM Result o2
         GROUP BY o2.col1
         WHERE o2.col1 = o1.col1
    )
    

    编辑:Jocelyn 的答案是一个,你可能加入了错误的专栏,而我没有看到它。

    【讨论】: