MySql множественный insert и update
Когда нам нужно обновить несколько строк в таблице MySql, можно выполнить последовательно несколько update-ов. Когда вставить строки в таблицу - несколько insert-ов. Но это очень плохо в плане производительности. Рассмотрим короткий пример добавления и обновления нескольких строк в таблице одним запросом.
Задача: есть таблица товаров с ценами. Например, таблица goods, поля id, good, price. id - ключевое поле. id и price - числовые целые значения. У нас есть массив данных с id товаров и названиями и ценами. Нам нужно обновить названия и цены у существующих товаров и добавить новые. Делается это одним запросом:
Множественный update
insert into goods
(id,good,price)
values
(1, 'Ноутбук', 30000),
(2, 'Телефон', 5000),
(3, 'Смартфон', 10000),
(4, 'Планшет', 15000)
on duplicate key
update good=values(good), price=values(price)
После выполнения в таблицу добавятся новые поля, если не было найдено ключевое поле.
Если же запись с таким ключом уже была, то в ней обновятся названия и цены товара.
Если мы гарантированно знаем, что все значения нужно только добавлять, то убираем 2 последние строки.
Получится так:
Множественный insert
insert into goods
(id,good,price)
values
(1, 'Ноутбук', 30000),
(2, 'Телефон', 5000),
(3, 'Смартфон', 10000),
(4, 'Планшет', 15000)
Истории из жизни айти и обсуждение кода.