Sql 使用同一表中的平均值更新表中的值的查询

Sql 使用同一表中的平均值更新表中的值的查询,sql,subquery,ms-access-2007,Sql,Subquery,Ms Access 2007,我正在寻找一些关于在更新查询中使用单独查询中的值的支持。背景是我有一个名为qry_AvgOfXCoeff的查询,它计算tbl_ConvertToDouble.XCoeff的平均值。我想做的是用第一次查询中计算的平均值替换任何大于0的Xcoeff值。目前,我无法在更新查询中直接使用qry,因为我收到了可怕的“必须使用可更新查询”错误 qry_AvgOfXCoeff: SELECT Avg(tbl_ConvertToDouble.XCoeff) AS [Avg] FROM tbl_ConvertTo

我正在寻找一些关于在更新查询中使用单独查询中的值的支持。背景是我有一个名为qry_AvgOfXCoeff的查询,它计算tbl_ConvertToDouble.XCoeff的平均值。我想做的是用第一次查询中计算的平均值替换任何大于0的Xcoeff值。目前,我无法在更新查询中直接使用qry,因为我收到了可怕的“必须使用可更新查询”错误

qry_AvgOfXCoeff:

SELECT Avg(tbl_ConvertToDouble.XCoeff) AS [Avg]
FROM tbl_ConvertToDouble;
现在我被告知,我应该能够通过在更新查询中使用IN条件来实现这一点,但我真的被这一点难住了,似乎找不到任何我将如何实现这一点的示例。我已经玩了一些代码如下,但请有人可以帮助这一点。这似乎是一件很简单的事情

UPDATE qry_AvgOfXCoeff, tbl_ConvertToDouble SET tbl_ConvertToDouble.[Xcoeff]
WHERE  (( ( tbl_ConvertToDouble.[xcoeff] ) IN (SELECT [qry_AvgOfCoeff].[Avg]
                                   FROM   [qry_AvgOfCoeff] AS Tmp
                                   Where [tbl_ConvertToDouble].[Xcoeff] > 0) ))
ORDER  BY tbl_calcreg.[xcoeff]; 
提前谢谢你


Donna

Access提供了域聚合函数,有助于避免“操作必须使用可更新查询”问题。在这种情况下,您可以使用该函数

更新tbl\u ConvertoDouble
设置XCoeff=DAvg(“XCoeff”、“tbl\U CONVERTODUBLE”)
其中XCoeff>0

感谢Gord,这是一个非常简单的解决方案,我确实认为我之前收到的建议对于我的需求来说很复杂。