【问题标题】:UPDATE query in ACCESS with AVERAGE value from other table使用其他表中的 AVERAGE 值在 ACCESS 中更新查询
【发布时间】:2019-05-11 07:19:13
【问题描述】:

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

Table 1 由项目 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)

【问题讨论】:

    标签: sql ms-access inner-join


    【解决方案1】:
    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
    

    【讨论】:

    • @BarrievanBoven 似乎这是 T-SQL 语法而不是 Jet-SQL
    • @4dmonster - 是的,这在 ms 访问中是不可能的
    【解决方案2】:

    这里有更简单的方法-

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

    您必须从查询中创建一个新表 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
    

    【讨论】:

    • 是的,这当然可行。只是想知道为什么我无法在 1 个查询中修复它。看起来很简单
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-13
    • 1970-01-01
    • 1970-01-01
    • 2018-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多