笔记本电脑功率多大-space是什么键
![updatesql](/uploads/image/0691.jpg)
2023年4月6日发(作者:华为分屏功能怎么使用)
sql的批量更新的操作
mysql批量更新共有以下四种办法
1、.replaceinto批量更新
replaceintotest_tbl(id,dr)values(1,’2’),(2,’3’),…(x,’y’);
2、insertinto…onduplicatekeyupdate批量更新
insertintotest_tbl(id,dr)values(1,’2’),(2,’3’),…(x,’y’)onduplicatekeyupdatedr=values(dr);
3.创建临时表,先更新临时表,然后从临时表中update
createtemporarytabletmp(idint(4)primarykey,drvarchar(50));
insertintotmpvalues(0,’gone’),(1,’xx’),…(m,’yy’);
updatetest_tbl,tmpsettest_=etest_=;
注意:这种⽅法需要⽤户有temporary表的create权限。
4、使⽤mysql⾃带的语句构建批量更新
mysql实现批量可以⽤点⼩技巧来实现:
UPDATEyoiurtable
SETdingdan=CASEid
WHEN1THEN3
WHEN2THEN4
WHEN3THEN5
END
WHEREidIN(1,2,3)
这句sql的意思是,更新dingdan字段,如果id=1则dingdan的值为3,如果id=2则dingdan的值为4……
where部分不影响代码的执⾏,但是会提⾼sql执⾏的效率。确保sql语句仅执⾏需要修改的⾏数,这⾥只有3条数据进⾏更新,⽽where⼦
句确保只有3⾏数据执⾏。
如果更新多个值的话,只需要稍加修改:
UPDATEcategories
SETdingdan=CASEid
WHEN1THEN3
WHEN2THEN4
WHEN3THEN5
END,
title=CASEid
WHEN1THEN‘NewTitle1’
WHEN2THEN‘NewTitle2’
WHEN3THEN‘NewTitle3’
END
WHEREidIN(1,2,3)
到这⾥,已经完成⼀条mysql语句更新多条记录了。
更新100000条数据的性能就测试结果来看,测试当时使⽤replaceinto性能较好。
replaceinto和insertintoonduplicatekeyupdate的不同在于:
replaceinto操作本质是对重复的记录先delete后insert,如果更新的字段不全会将缺失的字段置为缺省值,⽤这个要悠着点否则不⼩⼼清
空⼤量数据可不是闹着玩的。
insertinto则是只update重复记录,不会改变其它字段。
更多推荐
updatesql
发布评论