一尘不染

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

sql

在SQL Server 2005中,我试图弄清楚为什么我不能在一个表中插入多个字段。下面的查询插入一条记录,可以正常工作:

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的帮助时,其中一个示例显示了使用的“值”语法(括号内的值组,并用逗号分隔)。我在SQL Server Management
Studio中找到的帮助文档看起来像是针对SQL Server
2008的,所以这也许就是插入无法正常工作的原因。无论哪种方式,我都无法弄清楚为什么它不起作用。


阅读 164

收藏
2021-03-17

共1个答案

一尘不染

您使用的语法是SQL Server 2008的新语法:

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')

另一种选择是使用UNION ALL

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