Подтвердить что ты не робот

Вставьте несколько значений с помощью INSERT INTO (SQL Server 2005)

В 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 ','.

Когда я просмотрел справку для INSERT в SQL Sever Management Studio, один из их примеров показал использование синтаксиса "Значения", который я использовал (с группами значений в круглых скобках и разделен запятыми). Справочная документация, которую я нашел в SQL Server Management Studio, похожа на SQL Server 2008, поэтому, возможно, причина в том, что вставка не работает. В любом случае, я не могу понять, почему это не сработает.

4b9b3361

Ответ 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'

Ответ 2

Вы также можете использовать следующий синтаксис: -

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

От здесь

Ответ 3

В 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