2010-11-11 52 views
5

是否可以使用一個插入語句在表中插入多個行? 我知道如果我這樣做會出現這種情況:使用一個插入命令插入多行

insert into table (fields) select values from another_table 

但是如果我想插入:

row 1 - (a1, b1, c1) 
row 2 - (a2, b2, c2) 
... 
row n - (an, bn, cn) 

只用一個INSERT命令?

回答

7

兩種解決方案(來源:http://appsfr.free.fr/spip.php?article21):

INSERT ALL 
INTO table (column1, column2) 
VALUES (value1, value2) 
INTO table (column1, column2) 
VALUES (value1, value2) 
...etc... 
SELECT * FROM DUAL ; 

INSERT INTO table (column1, column2) 
SELECT value1, value2 FROM DUAL UNION ALL 
SELECT value1, value2 FROM DUAL UNION ALL 
...etc... 
SELECT value1, value2 FROM DUAL ; 
-5

不,這是不可能的。正如你自己已經說過的那樣,它只能通過select子句提供插入值和行。

+0

這是絕對有可能。 – rwilliams 2010-11-11 07:01:27

+0

至少在閱讀了接受的答案以及其他一些給定的答案之後,你現在肯定知道這是可能的。 – 2015-12-22 06:20:00

5

Insert All

INSERT ALL 
    INTO mytable (column1, column2, column3) VALUES ('val1.1', 'val1.2', 'val1.3') 
    INTO mytable (column1, column2, column3) VALUES ('val2.1', 'val2.2', 'val2.3') 
    INTO mytable (column1, column2, column3) VALUES ('val3.1', 'val3.2', 'val3.3') 
SELECT * FROM dual; 
4
INSERT INTO products (product_no, name, price) VALUES 
    (1, 'Cheese', 9.99), 
    (2, 'Bread', 1.99), 
    (3, 'Milk', 2.99); 
+0

問題是爲了oracle,所以你爲什麼要發佈PostgreSQL的答案? – Taryn 2012-09-21 20:32:55

+0

我在我的答案中刪除了'PostgreSQL'。爲了您的信息,這是標準的SQL-92。 – 2012-09-24 18:14:45

+0

根據OP的要求,這不適用於Oracle。 – 2014-04-14 03:00:36