mysql大批量更新数据

时间:2022-09-21 17:16:37

大批量的更新数据如果再使用传统的(update)方法一条一条的更新,效率是很慢的,而且性能差,也很容易造成阻塞。

这里给大家分享两种方法:

1:使用mysql 自有的语句构建批量更新
UPDATE tble
SET price = CASE id
WHEN 16 THEN 7.6
WHEN 19 THEN 8.86
WHEN 20 THEN 9
END
WHERE id IN (16,19,20)

这句sql 的意思是,更新表price字段,如果id=16 则price的值为7.6,如果id=19 则price的值为8.86…等。
where部分不影响代码的执行,但是会提高sql执行的效率。

如果要更新多个字段和多个条件时的情况:

UPDATE tble
SET price = CASE id
WHEN 1 THEN 3
WHEN 2 THEN 4
WHEN 3 THEN 5
END,
name = CASE id
WHEN 1 THEN 'Name 1'
WHEN 2 THEN 'Name 2'
WHEN 3 THEN 'Name 3'
END
WHERE id IN (1,2,3) and pcate in (24,27,26) and ccate in (277,271,207)...[多条件时直接: and 字段 in()]

2.创建临时表,先更新临时表,然后从临时表中update

create tem table tmp(id int(4) primary key,dr varchar(50));
insert into tmp values (0,’gone’), (1,’xx’),…(m,’yy’);
update test_tbl, tmp set test_tbl.dr=tmp.dr where test_tbl.id=tmp.id;
注意:这种方法需要用户有tem 表的create 权限。

如果大家有更好的方法,请留言哈!

问题咨询群:472148690