Mysql更新和连接查询

标签 mysql sql group-by sum sql-update

我在使用 Sum 更新查询时遇到问题。我有两张 table 进行事件和捐款。我想更新特定事件的每笔捐款总额

tb_campaign

  1. 编号
  2. 姓名
  3. 总捐款

tb_捐赠

  1. 编号
  2. 捐赠金额
  3. campaign_id

我当前的查询不起作用

UPDATE
    tb_campaign AS campaigns
    LEFT JOIN (
        SELECT
            sum(amount_donated) AS amount_donated
        FROM
            tb_donations
        GROUP BY
            campaign_id
    ) AS donations ON
        donations.campaign_id = campaigns.id
SET
    campaigns.total_donations = donations.amount_donated;

我的查询收到错误

最佳答案

您在子查询中错过了campaign_id,因此您的加入无法工作,因为没有donations.campaign_id

UPDATE  tb_campaign AS campaigns
LEFT JOIN (
        SELECT  campaign_id, sum(amount_donated) AS amount_donated
        FROM  tb_donations
        GROUP BY     campaign_id
    ) AS donations ON  donations.campaign_id = campaigns.id
SET    campaigns.total_donations = donations.amount_donated;

但由于您正在寻找数学行,因此您的连接条件应该是内部连接

UPDATE  tb_campaign AS campaigns
INNER  JOIN (
        SELECT  campaign_id, sum(amount_donated) AS amount_donated
        FROM  tb_donations
        GROUP BY     campaign_id
    ) AS donations ON  donations.campaign_id = campaigns.id
SET    campaigns.total_donations = donations.amount_donated;

关于Mysql更新和连接查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57239111/

相关文章:

mysql - 显示给定 ID 的给定值更改的日期

c# - 读取存储为 blob 的 word doc 文件并将其内容转换为字符串

sql - Oracle 的棘手 View

当结果是单行时,MySQL distinct 或 group by 结合没有给出结果

mysql - 在 MYSQL 中排名并列结果

c# - sql查询中的多个SELECT命令

php - 无法使用变量名更新数据库?

php - 仅从数据库检索新数据

python - 在 Python 中有条件地基于分组创建一个新列

vb.net - LINQ VB 如何检查对象列表中的重复项