ms-access - 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)
我一定犯了一些基本错误,因为我收到“操作必须使用可更新查询”错误。任何帮助将是最受欢迎的
解决方案
这是一个常见的问题。
在 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
推荐阅读
- python - 为什么每次运行我的函数时 PyQt 窗口都会崩溃
- questdb - 如何在 QuestDB 中获得活动连接/查询?
- substrate - 升级到 Frame v2 版本
- c# - 来自父项控件的 WPF 对象绑定
- delphi - 通过 skSince/skSentSince 搜索 IMAP 邮箱会忽略 TDateTime 的时间部分
- python - 我做了一个程序,它通过输入 IP 地址来告诉位置等,但我现在必须这样格式显示错误,我应该怎么做才能纠正它
- python - 视图函数 Flask 中的额外参数
- android - 在我旋转屏幕之前,LiveData 不会加载到片段中
- javascript - 收到并处理完事件后需要关闭MongoDB Changestream吗?
- ibm-mq - 我无法将我的主要安装更改为 opt/mqm/