2012-11-15 59 views
5

我有兩個Access表。一個表(table1)具有唯一的字段,MyID和另一個表(table2)具有多行MyID和另一列Data。我想編寫一個類似於foreach的SQL語句,其中MyID的所有值都從table2的Data中選擇和平均,然後在另一個字段Avg下的MyID行中更新。使用錶行的SQL foreach

**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做到這一點,但目前不知道。

回答

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 
+0

我得到的錯誤消息:微軟Office Access數據庫引擎找不到對象「AVG(數據)avgCol」。 –

0

這確實在MS Access的伎倆作爲查詢,但沒有更新到表中。

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