基于单个结果集批量插入多个表

问题描述 投票:0回答:1

我编写了一个计算成本较高的选择查询,它会生成特定的结果集。我需要将此结果插入到一个表中,并将该结果集的聚合插入到另一个表中。我需要在单个事务中完成这些操作,而不是使用两个事务,因为这可能会导致无关紧要的数据问题。

示例场景 我有一个表,其中包含有关员工姓名、部门和工资的数据

名字 部门 工资
杰森 金融 100
谍影重重 金融 120
迈克尔 金融 90
罗伯特 销售 75
唐尼 销售 500
马修 工程 10
汤姆 工程 90

我想将此表中的数据插入到表 A 中,每个部门的工资总和大于 100。在表 B 中,我想为每个部门插入一行,每个部门的工资总和。因此我的表 A 会是这样的

名字 部门 工资
杰森 金融 100
谍影重重 金融 120
迈克尔 金融 90
罗伯特 销售 75
唐尼 销售 500

表b就像

部门 工资
金融 310
销售 575
工程 100

请您帮助我了解如何在 Oracle 中执行此操作。

sql oracle insert batch-processing
1个回答
0
投票

你可以使用

INSERT ALL

INSERT ALL 
  INTO table1 (<cols to insert 1>) 
    VALUES (<cols from result>) 
  INTO table2 (<cols to insert 2>) 
    VALUES (< cols from result>) 
  WITH dat AS ( 
    < your data >
  ) 
  SELECT * FROM dat;

供参考

© www.soinside.com 2019 - 2024. All rights reserved.