【问题标题】:In SQL How is it possible to use the Sum Function in an Update在 SQL 中,如何在更新中使用 Sum 函数
【发布时间】:2012-10-23 13:49:47
【问题描述】:

这是我使用的代码

UPDATE Customers c   
SET c.TotalP= 
   (SELECT SUM(b.Price) 
    FROM Products b
   WHERE b.CustomerID= c.CustomerID)

我正在尝试将值 x 设置为客户表中的 TotalP 字段。 x 值等于 Products 表中 Customer ID 相同的对应价格的总和。

以上代码返回错误"Operation must be an Updateable query"

【问题讨论】:

    标签: sql ms-access sum sql-update


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      您可以使用 DSum:

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

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

      【讨论】:

      • 以上代码将字段返回为空,我试图做的是从产品表中获取值的总和并将其放入客户表中。我想要做的是在学校的一个项目中使用 Java 中的 Jtable 显示数据,这是我必须添加到程序中的最后一个概念。然后我完成了。
      • 可以上传数据库吗?
      • 不是,你可以使用 dropbox 之类的。您是否尝试过在 MS Access 中运行查询?你有任何错误吗?
      • 我在 Access 2007 中尝试了这个解决方案,它使用 Products 中的 CustomerID 的价格总和来更新客户表。也许您可以显示相关字段的表定义。
      • 我在 Access 中运行查询,这就是它的字段返回 null 的地方。
      猜你喜欢
      • 2019-09-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-17
      • 1970-01-01
      • 1970-01-01
      • 2021-11-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多