You need to enable JavaScript to run this app. MySQL如何用关联表SUM求和结果更新指定表字段
优惠活动
大模型
产品
解决方案
定价
更多

MySQL如何用关联表SUM求和结果更新指定表字段

正确SQL写法

UPDATE ehap
LEFT JOIN (
    SELECT 
        EHAP_ID,
        SUM(AMOUNT) AS month_total
    FROM beneficiaries
    WHERE 
        MONTH(disbursement_date) = MONTH(CURDATE()) 
        AND YEAR(disbursement_date) = YEAR(CURDATE())
    GROUP BY EHAP_ID
) AS b_sum ON ehap.id = b_sum.EHAP_ID
SET ehap.this_month = IFNULL(b_sum.month_total, 0);

原SQL执行失败的核心原因

  • 不能直接在UPDATE的SET子句中使用SUM()这类聚合函数,聚合函数需要先通过GROUP BY对关联表分组、完成预计算后才能关联更新
  • 原逻辑仅用MONTHNAME()判断月份会忽略年份差异,存在往年同月数据被错误计入统计的问题,建议同时匹配年份和月份更稳妥
  • 原WHERE条件重复写了关联逻辑,属于冗余代码

可选调整说明

如果不需要更新当月无对应收支记录的ehap行,可以把LEFT JOIN改成INNER JOIN,同时去掉IFNULL判断,直接写SET ehap.this_month = b_sum.month_total即可。

内容的提问来源于stack exchange,提问作者reiniel lagman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 02:24:03