Множественный UPDATE в MySQL
просмотров: 882017 марта 2016 года
Сразу предупреждаю, что эффективней использовать несколько «классических» запросов и, по возможности, транзакции (которые MyISAM не поддерживает). Так что… для общего развития:
Способ №1
UPDATE tbl_country SET price = CASE
WHEN code = 1 THEN 123;
WHEN code = 2 THEN 456;
…
END
WHERE code IN (1,2,…)
Способ №2
INSERT INTO tbl_country
(code, price)
VALUES
(1, 123),
(2, 456),
…
ON DUPLICATE KEY UPDATE tbl_country.price = VALUES(price);
Способ №3
Использование временных таблиц. Синтаксис не тестировался, но направление указано:
drop temorary table if exists tmp;
create temorary table tmp(i int primary key,n varchar(100),s varchar(100));
...
insert tmp (i,n,s) values(10,'first_name', 'last_name'),...; /* импорт из Excel */
...
update w set w.name=i.n, w.surname=i.s
from worktable w
join tmp t on t.i=w.uid;
drop temporary table tmp;