Здравствуйте! Нужно обновить 9 записей в одной таблице, пишу километровый запрос:
SET filed = 1 where id = 1, SET filed = 2 where id = 12, SET filed = '0.5' where id = 3…
Кто-нить знает, возможно ли это сделать как-то проще? В одну строчку там?
Здравствуйте! Нужно обновить 9 записей в одной таблице, пишу километровый запрос:
SET filed = 1 where id = 1, SET filed = 2 where id = 12, SET filed = '0.5' where id = 3…
Кто-нить знает, возможно ли это сделать как-то проще? В одну строчку там?
Ваше решение медленное. Эффективнее обновить по 1 полю за 1 запрос обычный, без join'ов.
Или использовать вот такой вариант, он гораздо эффективнее по производительности чем Ваш:
UPDATE `table` SET `field` = CASE `id` WHEN val1 THEN data1 WHEN val2 THEN data2 ELSE `field` END
Только обязательно не забывайте ELSE.
INSERT INTO `table` (id, field) VALUES (1, 1), (2, 12), (3, 0.5) ON DUPLICATE KEY UPDATE field = VALUES(field)