mysql大批量更新数据

来源:互联网 发布:编程语言特点 编辑:程序博客网 时间:2024/06/04 18:47

大批量的更新数据如果再使用传统的(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'    ENDWHERE 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