使用INSERT INTO插入多个值(SQL Server 2005)

在SQL Server 2005中,我试图找出为什么我无法将多个字段插入到表中。 以下查询插入一个logging,工作正常:

INSERT INTO [MyDB].[dbo].[MyTable] ([FieldID] ,[Description]) VALUES (1000,N'test') 

但是,以下查询(指定多个值)失败:

 INSERT INTO [MyDB].[dbo].[MyTable] ([FieldID] ,[Description]) VALUES (1000,N'test'),(1001,N'test2') 

我得到这个消息:

 Msg 102, Level 15, State 1, Line 5 Incorrect syntax near ','. 

当我在SQL Sever Management Studio中查询INSERT的帮助时,他们的一个例子显示了我使用的“Values”语法(用括号括起来并用逗号分隔)。 我在SQL Server Management Studio中find的帮助文档看起来像SQL Server 2008,所以也许这就是插入不起作用的原因。 无论哪种方式,我不明白为什么它不会工作。

您正在使用的语法是SQL Server 2008的新增function:

 INSERT INTO [MyDB].[dbo].[MyTable] ([FieldID] ,[Description]) VALUES (1000,N'test'),(1001,N'test2') 

对于SQL Server 2005,您将不得不使用多个INSERT语句:

 INSERT INTO [MyDB].[dbo].[MyTable] ([FieldID] ,[Description]) VALUES (1000,N'test') INSERT INTO [MyDB].[dbo].[MyTable] ([FieldID] ,[Description]) VALUES (1001,N'test2') 

另一种select是使用UNION ALL

 INSERT INTO [MyDB].[dbo].[MyTable] ([FieldID] ,[Description]) SELECT 1000, N'test' UNION ALL SELECT 1001, N'test2' 

您也可以使用以下语法: –

 INSERT INTO MyTable (FirstCol, SecondCol) SELECT 'First' ,1 UNION ALL SELECT 'Second' ,2 UNION ALL SELECT 'Third' ,3 UNION ALL SELECT 'Fourth' ,4 UNION ALL SELECT 'Fifth' ,5 GO 

从这里

在SQL Server 2008,2012,2014中,可以使用单个SQL INSERT语句插入多行。

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

其他方式

 INSERT INTO TableName (Column1, Column2 ) SELECT Value1 ,Value2 UNION ALL SELECT Value1 ,Value2 UNION ALL SELECT Value1 ,Value2 UNION ALL SELECT Value1 ,Value2 UNION ALL SELECT Value1 ,Value2