在ACCESS中使用来自其他表的AVERAGE值进行UPDATE查询

我有这两个简单的访问表 .

Table 1 由Item descriptionweight 列组成 . 项目 description 不是唯一的,因为 weight 略有不同 .

Table 2 旨在保存 table 1 中项目的平均 weight . 在此表中,项目 description 是唯一的 .

我无法在ACCESS工作中进行UPDATE查询 . 它说查询不包括 weight 作为聚合函数的一部分 .

当我尝试添加GROUP BY子句时,由于语法错误,它仍然无法工作 .

任何人都知道可能是什么问题?

这是查询:

UPDATE TABLE2 
INNER JOIN TABLE1 ON TABLE2.DESCRIPTION = TABLE1.DESCRIPTION
SET TABLE2.WEIGHT = AVG(TABLE1.WEIGHT)

回答(2)

2 years ago

UPDATE t2
SET t2.WEIGHT = t1.AVG_WEIGHT 
FROM TABLE2 t2
INNER JOIN (select  TABLE1.DESCRIPTION,AVG(TABLE1.WEIGHT) as AVG_WEIGHT
   from TABLE1 
  group by TABLE1.DESCRIPTION) as t1
on TABLE2.DESCRIPTION = TABLE1.DESCRIPTION

2 years ago

这里有更简单的方法 -

您需要创建一个临时或中间表来计算平均值 .

您必须从查询中创建一个新表t3

select TABLE1.DESCRIPTION,AVG(TABLE1.WEIGHT) as AVG_WEIGHT    
from TABLE1 
group by TABLE1.DESCRIPTION

然后你可以在更新查询中使用它

UPDATE TABLE2 
    INNER JOIN TABLE3 ON TABLE3.DESCRIPTION = TABLE2.DESCRIPTION
    SET TABLE3.WEIGHT = TABLE2.WEIGHT