Пытаюсь реализовать массовый UPDATE, но не могу понять как его сделать для нескольких условий. Сейчас данный запрос выполняется в цикле.
UPDATE product_tara_test
SET price = ?, date_import = UNIX_TIMESTAMP(NOW())
WHERE id_product = ? AND id_stockroom = ?
Т.к. на каждую итерацию происходит запрос, время выполнения скрипта существенно торомзит из-за этого.
Пытаюсь реализовать через CASE Собрав динамически запрос, но не могу понять как его сделать по нескольким условиям:
WHERE id_product = ? AND id_stockroom = ?
UPDATE `product_tara_test` SET price = CASE
WHEN id_product = 1 THEN 100
...
END,
date_import = CASE
WHEN id = 1 THEN UNIX_TIMESTAMP(NOW())
....
END,
WHERE id_product in (1,2,3....) AND id_stockroom IN (1, 1, 1....)
UPDATE product_tara_test P
JOIN (
select ? as id_product, ? as id_stockroom, ? as price
union all
select ? as id_product, ? as id_stockroom, ? as price
...
) D
ON P.id_product=D.id_product and P.id_stockroom=D.id_stockroom
SET price=D.price, date_import = UNIX_TIMESTAMP(NOW())
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости