使用一个insert命令插入多行

时间:2010-11-11 06:54:30

标签: sql oracle

是否可以在一个包含一个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 )

只有一个插入命令?

5 个答案:

答案 0 :(得分: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 ;

答案 1 :(得分: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;

答案 2 :(得分:3)

INSERT INTO products (product_no, name, price) VALUES
    (1, 'Cheese', 9.99),
    (2, 'Bread', 1.99),
    (3, 'Milk', 2.99);

答案 3 :(得分:0)

INSERT INTO College (CustomerID, FirstName, MiddleName, LastName)

SELECT 7, N'Charles', N'Simmons', N'Burns'
UNION ALL
SELECT 9, N'Dominic', N'Fred', N'Einsten'
UNION ALL
SELECT 12, N'Dave', N'William, N'Bryan';

注意: 每个硬编码字符串值之前的字母N将字符串转换为NVARCHAR值以匹配列的数据类型。

答案 4 :(得分:-5)

不,这是不可能的。正如您已经说过的那样,只有select子句才能提供插入值和行。