Mysql update множественное обновление одним запросом
еще можно так

INSERT INTO `table` (id, field) VALUES (1, 1), (2, 12), (3, 0.5) ON DUPLICATE KEY UPDATE field = VALUES(field)
Ваше решение медленное. Эффективнее обновить по 1 полю за 1 запрос обычный, без join'ов.
Или использовать вот такой вариант, он гораздо эффективнее по производительности чем Ваш:

UPDATE `table` SET `field` = CASE `id`
WHEN val1 THEN data1
WHEN val2 THEN data2
ELSE `field` END

Только обязательно не забывайте ELSE.