5

我有两个访问表。一个表 (table1) 有一个唯一字段 MyID,另一个表 (table2) 有几行 MyID 和另一列 Data。我想编写一个类似于 foreach 的 SQL 语句,其中 MyID 的所有值都是从 table2 的数据中选择和平均的,然后在另一个字段 Avg 下的 MyID 行中更新。

**Table1**
MyID
ID1
ID2
ID3  

**Table2**
MyID   Data   Mon
ID2    10     Jan
ID2    20     Feb
ID1    10     Jan
ID3    30     Mar
ID1    30     Mar

预期结果如下:

**Table1**
MyID    Avg
ID1     20
ID2     15
ID3     30

也许在 SQL 中有更好的方法来做到这一点,但目前不知道。

4

2 回答 2

5
UPDATE  table1
        INNER JOIN
        (
            SELECT Data1, AVG(columnName) avgCol
            FROM table2
            GROUP BY Data1
        ) b ON table1.MyID = b.Data
SET     table1.avgColumnName = b.avgCol
于 2012-11-15T14:34:32.833 回答
0

这在 MS Access 中作为查询实现了技巧,但不会更新到表中。

SELECT Table2.[MyID], Avg(Table2.[Data]) AS [AVG]
FROM Table2
GROUP BY Table2.[MyID]
于 2012-11-21T12:50:05.303 回答