我有两个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中有更好的方法,但目前还不知道。
答案 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]