3

我正在使用INSERT ALLOracle 中的一条语句将数据插入两个不同的表中。数据来自一个相当复杂的子查询,而不是一个VALUES子句。

我的问题是我不想将子查询返回的所有列都插入到两个表中。

举个简单的例子,假设我有两个表tab1tab2每个表包含三列col1,col2col3.

A现在假设我的子查询返回包含值和B的单行C

所以,我想A,B和分别C插入col1,col2col3,tab1但我只想说AC进入col1col3tab2

我的陈述看起来像这样:

INSERT ALL
INTO tab1
  (col1, col2, col3)
INTO tab2
  (col1, ?, col3)
FROM
( ...
 complex subquery which returns A, B, C
  ...
)

有没有办法可以使用某种“填充”或“垃圾栏”来实现我的目标?

4

2 回答 2

9

是的:

INSERT ALL
INTO tab1
  (col1, col2, col3) values (a, b, c)
INTO tab2
  (col1, col3) values (a, c)
SELECT a, b, c
FROM
( ...
 complex subquery which returns A, B, C
  ...
)
于 2012-04-10T17:11:23.667 回答
2

这种语法是可能的

INSERT ALL
INTO ap_cust(f1, f2) VALUES (a, d)
INTO ap_orders(f1, f2, f3) VALUES (a, b, c)
SELECT a, b, c,d
FROM table;

http://psoug.org/reference/insert.html

于 2012-04-10T17:44:33.950 回答