使用1个查询插入多行

时间:2012-12-28 05:15:34

标签: sql ms-access ms-access-2003

使用ms access 2003插入包含1个查询的多行时出现问题。当我使用INSERT INTO时,如下面的代码

INSERT INTO Employee values ('1','b','c');
INSERT INTO Employee values ('2','d','e');  

问题,ms访问总是会出现在SQL语句结束后找到的字符。那么,有没有办法将数据插入表中?

5 个答案:

答案 0 :(得分:4)

使用Access SQL,您无法合并两个INSERT语句。你可以分别运行它们。但是如果你需要用一个语句来完成它,你将需要使用更复杂的查询。

INSERT INTO Employee
SELECT '1','b','c'
FROM Dual
UNION ALL
SELECT '2','d','e'
FROM Dual;

Dual是一个自定义表,旨在始终只包含一行。您可以使用this Stack Overflow answer中的说明创建自己的Dual表。

但是,实际上并不需要用于此目的的自定义表。您可以使用任何只返回一行的表或查询,而不是Dual

答案 1 :(得分:1)

试试这个

INSERT INTO Table ( Column1, Column2 ) VALUES
( Value1, Value2 ), ( Value1, Value2 )

INSERT INTO Employee values (('1','b','c'),('2','d','e'));

参考这里

SQL code to insert multiple rows in ms-access table

答案 2 :(得分:0)

不幸的是,它看起来MS Access不兼容,只允许单个查询插入,除非您有源表。如果您可以将其挂钩到可以执行查询的工具,那么您可以创建一个循环来运行多个插入

答案 3 :(得分:0)

使用此确认工作查询:

INSERT INTO Product (Code,Name,IsActive,CreatedById,CreatedDate )

SELECT * FROM (

SELECT '10001000' AS Code,'Blackburn sunglasses' AS Name,1 AS IsActive,1 AS CreatedById,'2/20/2015 12:23:00 AM' AS CreatedDate FROM Product

UNION SELECT '10005200' AS Code,'30 panel football' AS Name,1 AS IsActive,1 AS CreatedById,'2/20/2015 12:23:09 AM' AS CreatedDate FROM Product

) ;

答案 4 :(得分:-1)

insert into animal (animal_id, name, species)
values ( (1,'Foxi Maxi', 'dog'), (2, 'Dodo',' duck') , (3, 'Garfield', 'cat' ) )

使用此示例