这是我使用的代码
UPDATE Customers c
SET c.TotalP=
(SELECT SUM(b.Price)
FROM Products b
WHERE b.CustomerID= c.CustomerID)
我试图将值 x 设置为客户表中的 TotalP 字段。值 x 等于 Products 表中客户 ID 相同的对应价格的总和。
上面的代码返回一个错误"Operation must be an Updateable query"
这是我使用的代码
UPDATE Customers c
SET c.TotalP=
(SELECT SUM(b.Price)
FROM Products b
WHERE b.CustomerID= c.CustomerID)
我试图将值 x 设置为客户表中的 TotalP 字段。值 x 等于 Products 表中客户 ID 相同的对应价格的总和。
上面的代码返回一个错误"Operation must be an Updateable query"
您可以使用 Dsum:
UPDATE Customers
SET TotalP = DSum("Price","Products","CustomerID = " & CustomerID)
但它确实提出了一个问题,即当可以从查询中获取信息时,为什么要使用计算值更新表。
除了 VBA 脚本,微软还有三种方法: https: //support.microsoft.com/en-us/kb/116142
以下是使用交叉连接一次更新一条记录的两条 SQL 语句:
UPDATE tmp SET tmp.non_null_cnt = 0;
UPDATE tmp, ESC_Results SET tmp.non_null_cnt = [tmp].[non_null_cnt]+1
WHERE ESC_Results.asset4_id Is Not Null;
它会比其他方法慢,因为它必须重新计算存储的每一行的总和。