Массовый UPDATE в MySQL

Если вы хотите делать массовый апдейт в MySQL, то я могу вам предложить вот такой рецепт. Сначала вы создаете временную таблицу, циклом собираете массовый INSERT запрос и потом вставляете данные из временной таблицы в нужную. Выглядеть это может, например, так:

CREATE TEMPORARY TABLE ids (VALUE INT, url VARCHAR(255)); INSERT INTO ids VALUES (0, ‘http://url1.ru’), (0, ‘http://url2.ru’), (0, ‘http://url3.ru’); UPDATE blogs, ids SET my_value = ids.VALUE WHERE blogs.url = ids.url;

Поясню. Допустим, мне понадобилось обновить некое значение в таблице в соответствии с URL. Скажем, статистику интернет-магазинов. Я создал временную таблицу из тех значений, по котороым будет вестись поиск, и значений, которые я буду вставлять в нужную мне таблицу. Дальше, идет INSERT сразу нескольких строк. Его очень просто собирать в цикле из массива. Например вот так:

$elements = array(); foreach ($aray as $url => $value) { $elements[] = ‘(‘.$db->escape($value).’, ‘.$db->escape($url).’)’; } $insert_string = implode(‘,’, $elements);

После чего, собственно апдейт со вставкой. Временная таблица исчезнет после окончания сессии БД. На то она и временная.

Leave a Reply

Your email address will not be published. Required fields are marked *