UPDATE нескольких строк одним запросом
Бывают ситуации, когда нам нужно вставить несколько записей в таблицу одновременно. В принципе подобную задачу довольно просто решить одним, следующим запросом:
INSERT INTO
`table` (`name`, `value`)
VALUES
('Вася', 'qwerqwr'),
('Петя', 'fgdgsdg'),
('Коля', 'tryurty');
А вот, скажем, если нам нужно не вставить, а обновить данные? Так сказать, произвести множественный UPDATE ? – Тут ситуация сложнее. В данной ситуации можно использовать тот же INSERT таким образом (поле id – AUTO_INCREMENT PRIMARY KEY):
INSERT INTO
`table` (`id`,`name`, `value`)
VALUES
(1, 'Вася', 'qwerqwr'),
(2, 'Петя', 'fgdgsdg'),
(3, 'Коля', 'tryurty')
ON DUPLICATE KEY UPDATE
`name` = VALUES(`name`),
`value` = VALUES(`value`)
В данном запросе мы специально провоцируем конфликт ключей по полю ID, тогда то и выполняется ON DUPLICATE KEY UPDATE, и данные в полях, ключи которых вызовут конфликт - обновятся.
Информация копипастерам
Внимание! Копирование контента с сайта, возможно только с разрешения администратора. Т.е. Меня! Я скорее всего разрешу Вам это сделать, в обмен на живую ссылку, на статью оригинал.
UPDATE нескольких строк одним запросом
