SQL Developer-基于不同ID更新/插入不同表中的列总和

SQL Developer-基于不同ID更新/插入不同表中的列总和,sql,sql-update,oracle-sqldeveloper,sql-insert,Sql,Sql Update,Oracle Sqldeveloper,Sql Insert,业余SQL编写器在基于现有表的值构建表时遇到问题。 每次使用服务时,主表都会记录一条ID为的记录。每个用户的ID保持不变,但会在使用过程中重复跟踪相关信息。该表包含约200万条记录和20k个不同的ID *示例- 用户ID |已用金额 用户_1998| 9GB, 用户_1999| 4GB, 用户_1999 | 1GB, 用户| 1999 | 0.5 GB* 对于新表,我们希望创建一个列,该列根据不同的ID汇总使用情况并进行组织 目标- 身份证件总使用量 用户_1998-9GB 用户_1999-5

业余SQL编写器在基于现有表的值构建表时遇到问题。

每次使用服务时,主表都会记录一条ID为的记录。每个用户的ID保持不变,但会在使用过程中重复跟踪相关信息。该表包含约200万条记录和20k个不同的ID

*示例-
用户ID |已用金额

用户_1998| 9GB,
用户_1999| 4GB,
用户_1999 | 1GB,
用户| 1999 | 0.5 GB*

对于新表,我们希望创建一个列,该列根据不同的ID汇总使用情况并进行组织

  • 目标-
    身份证件总使用量
    用户_1998-9GB
    用户_1999-5.5GB
下面的代码是我的尝试

UPDATE ml_draft  
SET true_usage = (  
SELECT SUM(true_usage)  
FROM table2 t2  
INNER JOIN ml_draft ON  
ml_draft.subscription_id = t2.subscription_id);
如果有任何其他细节需要补充,请告诉我。错误各不相同

您需要相关子查询。因此,不需要在子查询中使用
JOIN

UPDATE ml_draft d
    SET true_usage = (SELECT SUM(t2.true_usage)  
                      FROM table2 t2  
                      WHERE d.subscription_id = t2.subscription_id
                     );

为了提高性能,您需要在
表2(订阅id,真实用法)

上建立索引。我相信这是可行的,但是SQL一直超时……目前正在研究连接池。命令行错误:97列:1错误报告-SQL错误:关闭连接,不确定这是否会更改任何内容,但主表中没有true_usage列。仅限该特定会话期间使用的数量。我不应该把SUM(真正的用法)放在表中,而应该把SUM(使用的金额)放在表中,以得到我想要的真正的用法