Вставка нескольких строк в одном 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");

Могу ли я вставить все 4 строки в одном операторе SQL?

Комментарии к вопросу (14)

В SQL Server 2008 вы можете вставлять несколько строк с помощью одного оператора SQL INSERT.

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

Для ознакомления с этим посмотрите курс MOC 2778A - Writing SQL Queries in 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');
Комментарии (13)

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

INSERT INTO table1 (First, Last)
VALUES
    ('Fred', 'Smith'),
    ('John', 'Smith'),
    ('Michael', 'Smith'),
    ('Robert', 'Smith');
Комментарии (10)

ПРИМЕЧАНИЕ: Этот ответ относится к 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 записей.

Комментарии (0)

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

Пример:

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
Комментарии (5)