使用子查询访问更新
Posted
技术标签:
【中文标题】使用子查询访问更新【英文标题】:ACCESS update with subquery 【发布时间】:2020-07-20 03:05:07 【问题描述】:我有一张这样的桌子:
现在我正在尝试在表格的“SUMAMOUNT”列中写下每个“CODE”和“IBAN”的金额总和,但我无法达到这一点。
我想要这样的东西:
我正在使用此查询,但它不起作用:
update tabella
set sumamount = (select sum(t2.amount)
from tabella as t2
where t2.code = tabella.code and t2.iban = tabella.iban
);
前面的查询给了我这个结果: 你能帮助我吗?我正在使用 MS ACCESS。 提前谢谢!
编辑:错误截图: 我什至无法尝试运行它,因为他要求我保存它。当我尝试保存时,访问给了我这个错误。【问题讨论】:
【参考方案1】:考虑域聚合DSum
,它允许可更新的查询。下面假设 code
和 iban
是文本类型,因此需要单引号括起来。
UPDATE tabella t
SET t.sumamount = DSUM("amount",
"tabella",
"code = '" & t.code & "' AND iban = '" & t.iban & '");
(顺便说一句,数据库中的最佳做法是避免将计算保存在表中。节省资源并根据需要简单地对数据运行查询。)
【讨论】:
DSUM
是否仅在 Access 中可用(如 Nz()
) - 还是在其他应用程序中使用 ODBC/OLEDB 时也可用?
太棒了!为优秀的解决方案点赞。我有同样的问题,这个答案解决了我的问题。再次,非常感谢。
@Dai,域聚合在 ODBC/OLEDB 连接中作为 Access 方言的一部分提供。以上是关于使用子查询访问更新的主要内容,如果未能解决你的问题,请参考以下文章