【问题标题】:Update column with SUM from another table, PostgreSQL使用另一个表 PostgreSQL 中的 SUM 更新列
【发布时间】:2021-01-08 13:21:53
【问题描述】:

我尝试根据另一个表中的SUM 更新我的users points。

UPDATE users u
INNER JOIN
(
    SELECT user_id, SUM(user_score_for_answer) as total
    FROM answer_histories
    GROUP BY user_id, total
) a ON users.id = a.user_id
SET U.points = a.total

错误:“INNER”处或附近的语法错误

【问题讨论】:

    标签: sql postgresql join sql-update


    【解决方案1】:

    在 Postgres 中,语法如下:

    UPDATE users u
        SET points = a.total
    FROM (SELECT user_id, SUM(user_score_for_answer) as total
          FROM answer_histories
          GROUP BY user_id
         ) a 
    WHERE u.id = a.user_id;
    

    【讨论】:

    • SQL 语言的一个好的做法是在 'GROUP BY' 子句中避免使用聚合函数(如 SUM、COUNT、MAX 等),因此在本例中不需要使用 'total',即 ' GROUP BY user_id' 足以实现你想要的。欲了解更多信息,请查看:w3schools.com/sql/sql_groupby.asp
    • @AlexCorreia 。 . .谢谢你。那是一个错字; total 不应该出现在 GROUP BY 中。
    【解决方案2】:

    Gordon 的回答很好,只是出现了小错误 - “GROUP BY 中不允许使用聚合函数”,只需从 GROUP BY 中删除总计即可修复。

    *(由于声誉不足,我无法对此发表评论)。

    【讨论】:

      猜你喜欢
      • 2012-11-08
      • 1970-01-01
      • 2015-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多