С помощью синтаксиса insert SET я могу вставить несколько строк? - PullRequest
0 голосов
/ 12 февраля 2019

Я прочитал в этом блоге https://www.bennadel.com/blog/2913-using-the-insert-into-set-syntax-in-mysql.htm,, что вы можете использовать следующий синтаксис SET для вставки записей.

Пример:

INSERT INTO mytable SET col1= 'val1', col6= 'val6', col10='val10';
INSERT INTO mytable SET col3= 'val3', col5= 'val5', col10='val10';
INSERT INTO mytable SET col4= 'val4', col5= 'val5', col6='val6';

Можно ли вставить несколько строк только с одним оператором?

Ответы [ 5 ]

0 голосов
/ 12 февраля 2019

Синтаксис INSERT INTO ... SET ... нельзя использовать для нескольких вставок с одним и тем же оператором.

Но вы можете использовать INSERT INTO из SELECT с UNION ALL вместо
или INSERT INTO из VALUES.

, а затем положить NULL в полестолбцы, которые не имеют значения.

Пример:

CREATE TABLE mytable
(
  id int primary key auto_increment,
  col1 varchar(30),
  col2 varchar(30),
  col3 varchar(30),
  col4 varchar(30),
  col5 varchar(30)
);
INSERT INTO mytable (col1, col2, col3, col4, col5)
SELECT 'val1' as val1, null as val2, null as val3, 'val4' as val4, null as val5
UNION ALL SELECT null, 'val2', null, null, null
UNION ALL SELECT 'val1', null, 'val3', null, 'val5';
INSERT INTO mytable (col1, col2, col3, col4, col5) VALUES 
(null, 'val2', 'val3', 'val4', null),
('val1', null, 'val3', null, 'val5');
select * from mytable;
id | col1 | col2 | col3 | col4 | col5
-: | :--- | :--- | :--- | :--- | :---
 1 | val1 | <em>null</em> | <em>null</em> | val4 | <em>null</em>
 2 | <em>null</em> | val2 | <em>null</em> | <em>null</em> | <em>null</em>
 3 | val1 | <em>null</em> | val3 | <em>null</em> | val5
 4 | <em>null</em> | val2 | val3 | val4 | <em>null</em>
 5 | val1 | <em>null</em> | val3 | <em>null</em> | val5

дБ <> скрипка здесь

0 голосов
/ 12 февраля 2019

Нет, синтаксис INSERT ... SET нельзя использовать для вставки нескольких строк.Если вы посмотрите на синтаксис INSERT ... SET здесь , вы увидите:

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name
    [PARTITION (partition_name [, partition_name] ...)]
    SET assignment_list
    [ON DUPLICATE KEY UPDATE assignment_list]

Рядом:

assignment:
    col_name = value

assignment_list:
    assignment [, assignment] ...

Можно указать только 1 assignment_list (список значений), следовательно, вы можете вставить только одну строку.

Это также указано в в этом комментарии на вопрос, задающий вопрос оразличия между INSERT ... SET и INSERT ... VALUES.

0 голосов
/ 12 февраля 2019

Другой подход

CREATE TABLE co
    (coid int, name varchar(30));
INSERT INTO co
    (coid, name)
VALUES
    (1,'Volvo'),
    (2,'BMW'),
    (3,'Microsoft'),
    (4,'Apple')
;

Вы также можете сократить это (точное значение позиции):

INSERT INTO co
VALUES
    (1,'Volvo'),
    (2,'BMW'),
    (3,'Microsoft'),
    (4,'Apple')
;
0 голосов
/ 12 февраля 2019

Чтобы добавить несколько строк в таблицу с помощью одного оператора INSERT, используйте следующий синтаксис:

INSERT INTO MyTable
  ( Column1, Column2, Column3 )
VALUES
  ('John', 123, 'Lloyds Office'), 
  ('Jane', 124, 'Lloyds Office'), 
  ('Billy', 125, 'London Office'),
  ('Miranda', 126, 'Bristol Office');
0 голосов
/ 12 февраля 2019

вы можете использовать insert into select ....

insert into tbl1 (col1, col2, col3)
   select equivalent_col1, equivalent_col2, equivalent_col3 from tbl2 
     where filterCol = 1;

Приведенный выше запрос извлекает данные из tbl2 и вставляет в tbl1

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