是否可以使用一个插入语句在表中插入多个行? 我知道如果我这样做会出现这种情况:使用一个插入命令插入多行
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