SQL foreach使用表行

时间:2012-11-15 14:30:06

标签: sql ms-access

我有两个Access表。一个表(table1)有一个唯一的字段,MyID和另一个表(table2)有几行MyID和另一列Data。我想编写一个类似于foreach的SQL语句,其中选择MyID的所有值并从table2的Data中取平均值,然后在另一个字段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中有更好的方法,但目前还不知道。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

这可以将MS Access中的技巧作为查询,但不会更新到表中。

SELECT Table2.[MyID], Avg(Table2.[Data]) AS [AVG]
FROM Table2
GROUP BY Table2.[MyID]