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 bekomme 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. Auf jeden Fall kann ich nicht herausfinden, warum es nicht funktioniert.
quelle
,
zwischen den Wertesätzen versucht haben ? Ich weiß, dass dieser Beitrag ziemlich alt ist, aber ich bin neugierig. Ich habe dies gefunden, als ich nach einer Antwort gesucht habe, und der größte Teil meiner SQL-Kenntnisse befindet sich in den letzten Jahren.Antworten:
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
UNION ALL
:INSERT INTO [MyDB].[dbo].[MyTable] ([FieldID] ,[Description]) SELECT 1000, N'test' UNION ALL SELECT 1001, N'test2'
quelle
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 aus
quelle
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
quelle