2012-04-10 47 views
2

我在Oracle中使用INSERT ALL語句將數據插入到兩個不同的表中。數據來自相當複雜的子查詢而不是VALUES子句。選擇Oracle中的選擇列INSERT ALL語句

我的問題是,我不希望插入子查詢返回到這兩個表中的所有列。

作爲一個簡單的例子,假設我有兩個表tab1tab2各自含有三列col1col2col3

現在假設我的子查詢返回值爲ABC的單行。

所以,我想ABC分別插入col1col2tab1col3,但我想,說,只有AC進入col1tab2col3

我的發言會是這個樣子:

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

有沒有一種方法,我可以使用一些不大不小的「填充物」或「垃圾柱」的,讓我實現我的目標是什麼?

回答

8

是:

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 
    ... 
) 
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

+0

有沒有這樣做沒有'values'條款的一種方式? – 2012-04-10 17:51:40

+0

@Isaac,沒有'values'子句,它如何知道select中的哪些列要分配給目標表中的每一列? – 2012-04-11 02:29:55