UPDATE нескольких строк одним запросом

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, и данные в полях, ключи которых вызовут конфликт - обновятся.

Добавить комментарий


Защитный код
Обновить



Кто на сайте
Сейчас 84 гостей онлайн