вставка нескольких строк одной командой вставки - PullRequest
5 голосов
/ 11 ноября 2010

Можно ли вставить более одной строки в таблицу одним оператором вставки?Я знаю, что это произойдет, если я сделаю:

insert into table ( fields ) select values from another_table

Но что, если я хочу вставить:

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

только одной командой вставки?

Ответы [ 5 ]

7 голосов
/ 11 ноября 2010

Два решения (источник: 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 ;
5 голосов
/ 11 ноября 2010

Вставить все

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 голосов
/ 21 сентября 2012
INSERT INTO products (product_no, name, price) VALUES
    (1, 'Cheese', 9.99),
    (2, 'Bread', 1.99),
    (3, 'Milk', 2.99);
0 голосов
/ 30 января 2019
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 для соответствия типу столбца.

0 голосов
/ 11 ноября 2010

Нет, это невозможно. Как вы уже заявили, это возможно только с предложением select, предоставляющим значения вставки и строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...