Вставьте несколько значений с помощью 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 ','.

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

73
задан Ben McCormack 17 March 2010 в 13:31
поделиться

2 ответа

Синтаксис, который вы используете, является новым для 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'
97
ответ дан 24 November 2019 в 12:22
поделиться

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

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

Из здесь

10
ответ дан 24 November 2019 в 12:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: