2010-03-17 4 views
69

SQL Server 2005에서 여러 필드를 테이블에 삽입 할 수없는 이유를 파악하려고합니다. 하나 개의 레코드를 삽입 다음 쿼리는, 잘 작동 :INSERT INTO (SQL Server 2005)를 사용하여 여러 값 삽입

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

을하지만, 하나 개 이상의 값을 지정 다음 쿼리는 실패

Msg 102, Level 15, State 1, Line 5 
Incorrect syntax near ','. 
:
INSERT INTO [MyDB].[dbo].[MyTable] 
      ([FieldID] 
      ,[Description]) 
    VALUES 
      (1000,N'test'),(1001,N'test2') 

나는이 메시지가

SQL Sever Management Studio에서 INSERT에 대한 도움말을 찾았을 때, 그 중 하나의 예제는 내가 사용했던 "값"구문 (괄호 안에 값 그룹을 쉼표로 구분)을 사용하는 방법을 보여주었습니다. SQL Server Management Studio에서 찾은 도움말 설명서는 SQL Server 2008과 유사하므로 인서트가 작동하지 않는 이유 일 수 있습니다. 어느 쪽이든, 나는 그것이 작동하지 않는 이유를 알아낼 수 없습니다.

+0

이없이 그것을 시도하면 그냥 호기심','값 세트 사이? 나는이 지위가 상당히 오래되었음을 알고 있지만 나는 호기심이 많다. 나는 대답을 찾고있을 때 이것을 발견했으며, SQL 지식의 대부분은 지난 몇 년 내에 있습니다. – Malachi

+0

가능한 복제본 어떻게 [INSERT INTO dbo.Blah "부분을 반복하지 않고 여러 행을 삽입합니까?] (http://stackoverflow.com/questions/2624713/how-do-i-insert-multiple- rows-without-repeating-without-dbo-blah-part) –

답변

94

사용하는 구문은 SQL Server 2008의 새로운입니다 :

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

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

또 다른 옵션을 사용하는 것입니다 :

SQL 서버 2005에 대한
INSERT INTO [MyDB].[dbo].[MyTable] 
     ([FieldID] 
     ,[Description]) 
VALUES 
     (1000,N'test'),(1001,N'test2') 

여러에게 INSERT 문을 사용해야합니다 UNION ALL :

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

설명해 주셔서 감사합니다. 선택/연합은 위대한 일을했습니다. –

+0

고맙습니다. 우리는 SQL 2008을 개발하면서 테스트 시스템으로 SQL 2005를 사용했습니다. 일부 개발자는 SQL 2005에서만이 구문을 사용할 수 있다는 사실을 알지 못했습니다. – aheil

+0

@Downvoter - 의견을 보내시겠습니까? – Oded

9

당신은 또한 다음과 같은 구문을 사용할 수 있습니다 : -

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 

SQL 서버 2008,2012,2014에서

0

here에서 당신은 하나의 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 
관련 문제