it-swarm.com.de

Einfügen mehrerer Werte mit INSERT INTO (SQL Server 2005)

In SQL Server 2005 versuche ich herauszufinden, warum ich nicht mehrere Felder in eine Tabelle einfügen kann. Die folgende Abfrage, die einen Datensatz einfügt, funktioniert einwandfrei:

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

Die folgende Abfrage, die mehr als einen Wert angibt, schlägt jedoch fehl:

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

Ich erhalte diese Nachricht:

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

Als ich die Hilfe für INSERT in SQL Server Management Studio nachgeschlagen habe, wurde in einem ihrer Beispiele die von mir verwendete Syntax "Werte" verwendet (mit Wertegruppen in Klammern und durch Kommas getrennt). Die Hilfedokumentation, die ich in SQL Server Management Studio gefunden habe, scheint für SQL Server 2008 zu sein. Vielleicht ist dies der Grund, warum die Einfügung nicht funktioniert. So oder so, ich kann nicht herausfinden, warum es nicht funktioniert.

72
Ben McCormack

Die von Ihnen verwendete Syntax ist neu in SQL Server 2008:

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

Für SQL Server 2005 müssen Sie mehrere INSERT -Anweisungen verwenden:

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

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

Eine andere Option ist die Verwendung von UNION ALL:

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

Sie können auch die folgende Syntax verwenden: -

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

Von hier

10
Ashish Gupta

In SQL Server 2008, 2012, 2014 können Sie mehrere Zeilen mit einer einzigen SQL INSERT-Anweisung einfügen.

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

Ein anderer Weg

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
1
Rae Lee