2

这是我使用的代码

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"

4

2 回答 2

2

您可以使用 Dsum:

UPDATE Customers   
SET TotalP = DSum("Price","Products","CustomerID = " & CustomerID)

但它确实提出了一个问题,即当可以从查询中获取信息时,为什么要使用计算值更新表。

于 2012-11-02T21:16:10.300 回答
0

除了 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;

它会比其他方法慢,因为它必须重新计算存储的每一行的总和。

于 2015-06-29T18:54:18.630 回答