Массовый UPDATE в MySQL для нескольких условий

260
14 мая 2017, 23:21

Пытаюсь реализовать массовый 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....)
Answer 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())
READ ALSO
Как осуществить cron для экспорта данных с MySQL?

Как осуществить cron для экспорта данных с MySQL?

Есть таблицаТребуется выгружать данные таблицы в формате CSV в определенное время

338
Android. Сохранить данные из GridView в JSON

Android. Сохранить данные из GridView в JSON

Всем приветПервый день тут, поэтому буду максимально конкретным

310
Java Массив Class[]

Java Массив Class[]

Собственно, есть класс, у которого есть поле вида

294
Помогите сделать метод и его вызвать

Помогите сделать метод и его вызвать

Здравствуйте, я новичок в java, не могли бы вы мне помочь можно ли из этого кода сделать метод и потом вызывать его, а так он очень уж громоздкий,...

253