Множественный UPDATE в MySQL

просмотров: 883917 марта 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;
Поделиться

Что скажем?