mysql大批量更新数据

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

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值