Insert multiple values using INSERT INTO (SQL Server 2005)
在SQL Server 2005中,我试图弄清楚为什么我无法在表中插入多个字段。 以下查询,插入一条记录,工作正常:
1 2 3 4 5 | INSERT INTO [MyDB].[dbo].[MyTable] ([FieldID] ,[Description]) VALUES (1000,N'test') |
但是,以下查询(指定多个值)将失败:
1 2 3 4 5 | INSERT INTO [MyDB].[dbo].[MyTable] ([FieldID] ,[Description]) VALUES (1000,N'test'),(1001,N'test2') |
我收到这条消息:
1 2 | Msg 102, Level 15, State 1, Line 5 Incorrect syntax near ','. |
当我在SQL Sever Management Studio中查找INSERT的帮助时,他们的一个示例显示了我使用的"值"语法(括号中的值组并用逗号分隔)。 我在SQL Server Management Studio中找到的帮助文档看起来就像是SQL Server 2008,所以也许这就是插入不起作用的原因。 无论哪种方式,我都无法弄清楚为什么它不起作用。
您使用的语法是SQL Server 2008的新增功能:
1 2 3 4 5 | INSERT INTO [MyDB].[dbo].[MyTable] ([FieldID] ,[Description]) VALUES (1000,N'test'),(1001,N'test2') |
对于SQL Server 2005,您将必须使用多个
1 2 3 4 5 6 7 8 9 10 11 | INSERT INTO [MyDB].[dbo].[MyTable] ([FieldID] ,[Description]) VALUES (1000,N'test') INSERT INTO [MyDB].[dbo].[MyTable] ([FieldID] ,[Description]) VALUES (1001,N'test2') |
另一个选择是使用
1 2 3 4 5 | INSERT INTO [MyDB].[dbo].[MyTable] ([FieldID] ,[Description]) SELECT 1000, N'test' UNION ALL SELECT 1001, N'test2' |
您还可以使用以下语法: -
1 2 3 4 5 6 7 8 9 10 11 | 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语句插入多行。
1 2 | INSERT INTO TableName ( Column1, Column2 ) VALUES ( Value1, Value2 ), ( Value1, Value2 ) |
其他方式
1 2 3 4 5 6 7 8 9 10 | 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 |