Вставка нескольких строк в один SQL-запрос?

У меня есть несколько наборов данных для вставки сразу, скажем, 4 строки.

Моя таблица имеет три столбца: Person , Id и Office .

 INSERT INTO MyTable VALUES ("John", 123, "Lloyds Office");
INSERT INTO MyTable VALUES ("Jane", 124, "Lloyds Office");
INSERT INTO MyTable VALUES ("Billy", 125, "London Office");
INSERT INTO MyTable VALUES ("Miranda", 126, "Bristol Office");
 

Могу ли я insert всех 4 ряда в одном SQL statement ?

вопрос задан 17.01.2009
Streamline
685 репутация

4 ответов


  • 1833 рейтинг

    В SQL Server 2008 вы можете вставить несколько строк, используя один оператор SQL INSERT.

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

    Для справки см. MOC Course 2778A - Написание SQL-запросов в SQL Server 2008.

    Например:

     INSERT INTO MyTable ( Column1, Column2, Column3 )
    VALUES ('John', 123, 'Lloyds Office'), 
    ('Jane', 124, 'Lloyds Office'), 
    ('Billy', 125, 'London Office'),
    ('Miranda', 126, 'Bristol Office');
     
    ответ дан BinaryMisfit, с репутацией 20807, 17.01.2009
  • 718 рейтинг

    Если вы вставляете в одну таблицу, вы можете написать свой запрос следующим образом (возможно, только в MySQL):

     INSERT INTO table1 (First, Last)
    VALUES
        ('Fred', 'Smith'),
        ('John', 'Smith'),
        ('Michael', 'Smith'),
        ('Robert', 'Smith');
     
    ответ дан too much php, с репутацией 54894, 17.01.2009
  • 117 рейтинг

    ПРИМЕЧАНИЕ. Этот ответ предназначен для SQL Server 2005. Для SQL Server 2008 и более поздних версий в других ответах есть гораздо лучшие методы.

    Вы можете использовать INSERT с SELECT UNION ALL :

     INSERT INTO MyTable  (FirstCol, SecondCol)
        SELECT  'First' ,1
        UNION ALL
    SELECT  'Second' ,2
        UNION ALL
    SELECT  'Third' ,3
    ...
     

    Только для небольших наборов данных, хотя это должно быть хорошо для ваших 4 записей.

    ответ дан DavGarcia, с репутацией 13471, 17.01.2009
  • 69 рейтинг

    INSERT которые используют VALUES синтаксис, могут вставлять несколько строк. Для этого включите несколько списков значений столбцов, каждый из которых заключен в круглые скобки и разделен запятыми.

    Пример:

     INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
     
    ответ дан BinaryMisfit, с репутацией 20807, 1.04.2009