如何在更新语句中正确使用Avg函数?

时间:2011-09-06 19:56:00

标签: sql ms-access sql-update ms-access-2010

我正在尝试将每个MIUID的平均值插入表中。相关表格和栏目信息如下:

表1. [MIU ID],表1. [平均RSSI]

Table2.MIUID,Table2.MeanNum

如果我只是使用select语句,我会执行以下操作:

Select DISTINCT Table1.[MIU ID], Avg(Table1.[Avg RSSI]) as MeanNum
From Table1
GROUP BY Table1.[MIU ID]  

但是,我需要将此信息插入Table2中的列。我已经尝试了以下和以下的变体以及我得到的错误是它不会让我使用Group By,另一个错误说MeanNum不是聚合函数的一部分。

UPDATE Table2  
INNER JOIN Table1
ON Table2.MIUID = Table1.[MIU ID]  
SET Table2.MeanNum = Avg([Table1].[Avg RSSI]);

我尝试过的另一个问题是:

UPDATE Table2  
SET Table2.MeanNum = Avg([Table1].[Avg RSSI]) 
WHERE Table2.MIUID = Table1.[MIU ID]
Group By [Table1].[Avg RSSI]

摘要
重申我要做的就是获取Table1中Avg RSSI列的平均值,以获得每个不同的MIU ID,并将每个值插入表2中的相应行。

注意
Table2中有一个名为AvgNum的列可能是平均值,如果使用它会更容易获得需要进入MeanNum列的相同数字。

我知道如何按照两个步骤做我想做的事情,但是我希望能够在一个sql语句中做到这一点。

1 个答案:

答案 0 :(得分:2)

修改:以下代码无法在MS-Access / Jet中使用。看到这个链接:

Operation must use an updatable query. (Error 3073) Microsoft Access

原始回答:

您可以在子查询中使用原始SELECT查询并加入其中。没有语法检查,我比MS-Access更熟悉T-SQL,但是像:

UPDATE 
    t2
SET 
    t2.MeanNum = sub.MeanNum
From 
    Table2 t2
    INNER JOIN 
        (
        Select DISTINCT 
            Table1.[MIU ID], 
            Avg(Table1.[Avg RSSI] as MeanNum
        From 
            Table1  
        GROUP BY 
            Table1.[MIU ID] 
        ) sub
        ON sub.[MIU ID] = t2.MIUID