You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用UPDATE与SUM()聚合函数更新MS Access关联表

在MS Access中更新table2的Total Salary为table1对应员工的工资总和

嘿,这个需求我太熟悉了!在MS Access里实现这个更新,得用它特有的更新查询语法,毕竟Access的JOIN写法和标准SQL有些区别。下面给你分步说明:

核心思路

我们需要先对table1按Employee Name和Emp Number分组,计算每个员工的工资总和,再通过关联字段把这个总和同步到table2的Total Salary字段里。

直接可用的SQL代码

把这段代码复制到Access的SQL视图里执行就行:

UPDATE table2
INNER JOIN (
    -- 子查询:计算每个员工的工资总和
    SELECT [Employee Name], [Emp Number], SUM([Emp Salary]) AS SumSalary
    FROM table1
    GROUP BY [Employee Name], [Emp Number]
) AS SalarySummary
-- 用两个关联字段匹配表
ON table2.[Employee Name] = SalarySummary.[Employee Name] 
AND table2.[Emp Number] = SalarySummary.[Emp Number]
-- 更新Total Salary字段
SET table2.[Total Salary] = SalarySummary.SumSalary;

关键细节提醒

  • 因为你的字段名里包含空格,所以必须用方括号[]把字段名包起来,否则Access会识别错误。
  • 如果table2里存在一些员工在table1中没有对应记录的情况,用上面的INNER JOIN会跳过这些员工(他们的Total Salary保持原样)。要是想把这些员工的Total Salary设为0,可以改成LEFT JOIN,并使用Access的NZ函数处理空值:
    UPDATE table2
    LEFT JOIN (
        SELECT [Employee Name], [Emp Number], SUM([Emp Salary]) AS SumSalary
        FROM table1
        GROUP BY [Employee Name], [Emp Number]
    ) AS SalarySummary
    ON table2.[Employee Name] = SalarySummary.[Employee Name] 
    AND table2.[Emp Number] = SalarySummary.[Emp Number]
    SET table2.[Total Salary] = NZ(SalarySummary.SumSalary, 0);
    
  • 执行更新前,建议先单独运行子查询(就是括号里的部分),确认求和结果是正确的,避免误操作。如果数据重要,最好先备份两个表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:21:40