是否可以使用一個插入語句在表中插入多個行? 我知道如果我這樣做會出現這種情況:使用一個插入命令插入多行
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命令?
是否可以使用一個插入語句在表中插入多個行? 我知道如果我這樣做會出現這種情況:使用一個插入命令插入多行
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命令?
兩種解決方案(來源: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 ;
不,這是不可能的。正如你自己已經說過的那樣,它只能通過select子句提供插入值和行。
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;
INSERT INTO products (product_no, name, price) VALUES
(1, 'Cheese', 9.99),
(2, 'Bread', 1.99),
(3, 'Milk', 2.99);
問題是爲了oracle,所以你爲什麼要發佈PostgreSQL的答案? – Taryn 2012-09-21 20:32:55
我在我的答案中刪除了'PostgreSQL'。爲了您的信息,這是標準的SQL-92。 – 2012-09-24 18:14:45
根據OP的要求,這不適用於Oracle。 – 2014-04-14 03:00:36
這是絕對有可能。 – rwilliams 2010-11-11 07:01:27
至少在閱讀了接受的答案以及其他一些給定的答案之後,你現在肯定知道這是可能的。 – 2015-12-22 06:20:00