在Access 2010中使用一个insert语句插入多行

Jan*_*eks 9 ms-access

我想在Access 2010表中插入多个值,但我似乎无法找到方法.
MySQL有一个很好的方法:

INSERT INTO Production.UnitMeasure
VALUES 
    (N'FT2', N'Square Feet ', '20080923'),
    (N'Y', N'Yards', '20080923'),
    (N'Y3', N'Cubic Yards', '20080923');
Run Code Online (Sandbox Code Playgroud)

这样的事情也可以在SQL Server中完成吗?

Dam*_*ver 10

正如marc_s指出的那样,对于SQL Server 2008及更高版本,您可以只使用表值构造函数.对于以前的版本,您可以使用insertselect...union all,例如:

INSERT INTO Production.UnitMeasure
SELECT N'FT2',N'Square Feet ','20080923' union all
SELECT N'Y',  N'Yards',       '20080923' union all
SELECT N'Y3', N'Cubic Yards', '20080923'
Run Code Online (Sandbox Code Playgroud)

(关于SQL Server 中表值构造函数的特定文档.我找不到关于行值构造函数的具体单独文档,但这就是它们的含义)


NGL*_*GLN 6

对于SQL-Server:是的,它可以完全像你写的那样.请确保列值的顺序与表中显示的顺序相同.另外:您必须为每个现有列提供值.

对于Access 2010:否.至少不是通过sql中的硬编码值,而是仅通过从表中选择多个记录(在相同或另一个数据库中).另见Khepri答案中的链接.

  • 是 - 从SQL Server**2008**开始 - 这在2008版本之前无效 (3认同)
  • 对于 MS-Access 来说,这更多的是是和否,请参阅这个答案:http://stackoverflow.com/questions/62504/is-there-any-way-to-create-multiple-insert-statements-in-a-ms -访问查询/65027#65027 (2认同)

小智 6

使用此确认工作查询:

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

) ;
Run Code Online (Sandbox Code Playgroud)