@phpcoder81

Как сделать множественный UPDATE?

Ребят, подскажите, как изменять цены у 500 товаров?
Сейчас у меня реализовано не очень грамотно. Создается массив в 500 запросами и через foreach раз в сутки прогоняется. Все делается быстро. Но я знаю, что хреново делать много запросов.
UPDATE `product` SET `price` = 5000 WHERE `id` = 1;
UPDATE `product` SET `price` = 4500 WHERE `id` = 2;
  • Вопрос задан
  • 149 просмотров
Решения вопроса 1
Ermako
@Ermako
Data Scientist
Сначала создаем таблицу для апдейтов
update_info с полями id, price. Заполняем ее значениями для обновления - батчем, отдельными insert-ами, в любом порядке.

Далее обновляем целевую таблицу product через join
UPDATE products p 
    JOIN update_info ui ON t.id =  ui.id
SET p.price = ui.price


Вы можете в течение дня наполнять таблицу для апдейта как некоторую очередь, а после по регламенту обновлять целевую и очищать очередь.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@vilgeforce
Раздолбай и программист
UPDATE product SET price = 0 WHERE id > 17 AND id < 999; типа такого что-то.
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
INSERT INTO `product` (`id`, `price`) 
  VALUES (1, 5000), (2, 4500) 
  ON DUPLICATE KEY UPDATE `price` = VALUES(`price`)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы