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

Мені потрібно вставити декілька наборів даних одночасно, скажімо, 4 рядки. Моя таблиця має три стовпці: "Особа", "Ідентифікатор" і "Посада".

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-оператор?

У SQL Server 2008 можна вставити кілька рядків за допомогою одного оператора SQL INSERT.

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

Для ознайомлення з цим подивіться курс MOC 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');
Коментарі (13)

Якщо ви виконуєте вставку в одну таблицю, ви можете написати свій запит так (можливо, тільки в MySQL):

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

ПРИМІТКА: Ця відповідь стосується SQL Server 2005. Для SQL Server 2008 і пізніших версій існують набагато кращі методи, як показано в інших відповідях.

Ви можете використовувати INSERT with SELECT UNION ALL:

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

Але тільки для невеликих наборів даних, що повинно підійти для ваших 4 записів.

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