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)
Истории из жизни айти и обсуждение кода.