복붙노트

[SQL] 하나 INSERT 명령과 복수의 열을 삽입

SQL

하나 INSERT 명령과 복수의 열을 삽입

그것은 하나의 삽입 문을 사용하여 테이블에 하나 개 이상의 행을 삽입 할 수 있습니까? 나는 내가 할 경우 이런 일이 알고 :

insert into table ( fields ) select values from another_table

하지만 내가 원하는 경우 것은 삽입 :

row 1 - ( a1, b1, c1 )
row 2 - ( a2, b2, c2 )
...
row n - ( an, bn, cn )

하나 개의 삽입 명령을?

해결법

  1. ==============================

    1.두 솔루션 (출처 : http://appsfr.free.fr/spip.php?article21) :

    두 솔루션 (출처 : http://appsfr.free.fr/spip.php?article21) :

    INSERT ALL
    INTO table (column1, column2)
    VALUES (value1, value2)
    INTO table (column1, column2)
    VALUES (value1, value2)
    ...etc...
    SELECT * FROM DUAL ;
    

    또는

    INSERT INTO table (column1, column2)
    SELECT value1, value2 FROM DUAL UNION ALL
    SELECT value1, value2 FROM DUAL UNION ALL
    ...etc...
    SELECT value1, value2 FROM DUAL ;
    
  2. ==============================

    2.모두 삽입

    모두 삽입

    INSERT ALL
       INTO mytable (column1, column2, column3) VALUES ('val1.1', 'val1.2', 'val1.3')
       INTO mytable (column1, column2, column3) VALUES ('val2.1', 'val2.2', 'val2.3')
       INTO mytable (column1, column2, column3) VALUES ('val3.1', 'val3.2', 'val3.3')
    SELECT * FROM dual;
    
  3. ==============================

    3.

    INSERT INTO products (product_no, name, price) VALUES
        (1, 'Cheese', 9.99),
        (2, 'Bread', 1.99),
        (3, 'Milk', 2.99);
    
  4. ==============================

    4.

    INSERT INTO College (CustomerID, FirstName, MiddleName, LastName)
    
    SELECT 7, N'Charles', N'Simmons', N'Burns'
    UNION ALL
    SELECT 9, N'Dominic', N'Fred', N'Einsten'
    UNION ALL
    SELECT 12, N'Dave', N'William, N'Bryan';
    

    노트: 문자 N은 NVARCHAR 값 각 하드 코딩 된 문자열 값 변환 전 문자열 열의 데이터 유형을하였습니다.

  5. ==============================

    5.아니, 이건 수 없습니다. 이미 자신을 언급 한 바와 같이, 그것은 삽입 값과 행을 제공하는 SELECT 절에서만 가능하다.

    아니, 이건 수 없습니다. 이미 자신을 언급 한 바와 같이, 그것은 삽입 값과 행을 제공하는 SELECT 절에서만 가능하다.

  6. from https://stackoverflow.com/questions/4152037/inserting-multiple-rows-with-one-insert-command by cc-by-sa and MIT license