首页 > 解决方案 > MS-Access - 使用加入另一个表的结果更新列

问题描述

我需要更新 Amounts.Amt_lcy,方法是将 Amt_fcy 列与相应的 Fx_rates.Rate 相乘,方法是将两个表连接在 Data 上。

*Amounts*

Data        |    Amt_fcy    |  Amt_lcy  
31/03/2018            10              
30/04/2018            15    


*Fx_rates*

Data        |  Rate  
31/03/2018      2.5
30/04/2018      3.1

我的查询如下:

update Amounts set Amt_lcy=(select Amounts.Amt_fcy*Fx_rates.Rate from Amounts left join Fx_rates on Amounts.Data=Fx_rates.Data)

我一定犯了一些基本错误,因为我收到“操作必须使用可更新查询”错误。任何帮助将是最受欢迎的

标签: ms-accessjoinsql-updatems-access-2013calculated-columns

解决方案


这是一个常见的问题。

在 Access 中的更新查询中,任何查询中的所有列(包括子查询但不包括EXISTS子句)都需要可更新。

由于您Amounts.Amt_fcy*Fx_rates.Rate在子查询中进行计算,并且该子查询不可更新,因此查询失败。

可以重写此查询以在主查询中执行该计算,同时运行速度更快:

Update Amounts 
Left join Fx_rates on Amounts.Data=Fx_rates.Data
set Amt_lcy =  Amounts.Amt_fcy*Fx_rates.Rate

推荐阅读