Мысли на тему массового UPDATE в MySQL

Оказывается, это возможно!

[-]
View Code MySQL
INSERT INTO `table` (`a`, `b`, `c`) VALUES
(1, 2, 3), (4, 5, 6), (7, 8, 9)
ON DUPLICATE KEY UPDATE `b`=VALUES(`b`), `c`=VALUES(`c`);

Например, для WordPress (при условии, что пара (user_id, meta_key) является уникальным ключом):

[-]
View Code MySQL
INSERT INTO `wp_usermeta` (`user_id`, `meta_key`, `meta_value`) VALUES
(1, 'key1', 'value1'),
(1, 'key2', 'value2'),
(1, 'key3', 'value3'),
(1, 'key4', 'value4'),
(1, 'key5', 'value5')
ON DUPLICATE KEY UPDATE `meta_value`=VALUES(`meta_value`);

Должно работать.

Автор: ; опубликовано в: MySQL; метки: MySQL, советы
18
Янв
2009

RSS Комментарии к статье «Мысли на тему массового UPDATE в MySQL» (6)  »

  1. Для множественного апдейта есть и такой способ:

    [-]
    View Code MySQL
    UPDATE
        table
    SET
        field = ELT(FIELD(id, $sIdList), $sValueList)
    WHERE
        id IN ($sIdList)
  2. Дмитрий

    …что пара (user_id, meta_key) является уникальным ключом…, а что означает пара является уникальным ключом?

  3. Вадим

    Отличное решение с UPDATE. Благодарю, сильно выручил

Пожалуйста, не используйте эту форму для комментирования! Данная форма предназначена исключительно для ботов.

Оставить комментарий к записи «Мысли на тему массового UPDATE в MySQL»

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Оставляя комментарий, вы выражаете своё согласие с Правилами комментирования.

Подписаться, не комментируя

गते गते पारगते पारसंगते बोधि स्वाहा