我在使用 Sum 更新查询时遇到问题。我有两张 table 进行事件和捐款。我想更新特定事件的每笔捐款总额
tb_campaign
- 编号
- 姓名
- 总捐款
tb_捐赠
- 编号
- 捐赠金额
- 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/