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

时间:2014-11-20 09:29:10

标签: sql subquery ms-access-2007

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

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]; 

先谢谢你。

1 个答案:

答案 0 :(得分:1)

Access提供的域聚合函数可以帮助避免"操作必须使用可更新的查询"问题。在这种情况下,您可以使用DAvg()功能

UPDATE tbl_ConvertToDouble 
SET XCoeff = DAvg("XCoeff", "tbl_ConvertToDouble")
WHERE XCoeff>0