创建或修改目录:/www/wwwroot/104.219.215.234/data 失败!
裸舞 合集 MySql利用case when达成批量更新多笔纪录的不同值达成要津 - 网曝黑料

栏目分类

热点资讯

你的位置:网曝黑料 > 家庭伦理小说 >

裸舞 合集 MySql利用case when达成批量更新多笔纪录的不同值达成要津

发布日期:2024-11-01 11:54    点击次数:109

  mysql更新语句很轻便,更新一条数据的某个字段裸舞 合集,一般这么写:UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value';

  要是更新覆没字段的不同值,mysql也很轻便,利用 in 查询,修改下where即可:UPDATE mytable SET myfield = 'value' WHERE other_field in ('other_values');

  这里真贵 ‘other_values' 是一个逗号(,)分隔的字符串,如:1,2,3。况兼 in 后头是括号()哦,不是数组

  那要是更新多条数据为不同的值,可能许多东说念主会这么写:

  等于轮回一条一条的更新纪录。一笔纪录update一次,这么性能很差,也很容易形成禁锢。

av男同

  那么能不可一条 sql 语句达成批量更新呢?mysql并莫得提供平直的要津来达成批量更新,然则不错用点小妙技来达成。

  这里使用了case when 这个小妙技来达成批量更新。

  这句 sql 的意旨道理是,更新 myfield 字段,要是 id=1 则 myfield 的值为 value1,要是 id=2 则为 value2,要是id=3 则为 value3。

  等于将条款语句写在了一都。这里的where部分不影响代码的延长,然则会普及sql延长的成果。确保sql语句仅延长需要修改的行数,这里唯一3条数据进行更新,而where子句确保唯一3行数据延长。

  要是更新多个值的话,只需要稍加修改:

  到这里,也曾完成一条mysql语句更新多笔纪录了。然则要在业务中诓骗,需要集中作事端话语,这里以php为例,构造这条mysql语句:

  这个例子,有8笔纪录进行更新。代码也很容易办法,你学会了吗

性能分析

  当我使用上万笔纪录利用mysql批量更新,发现使用最原始的批量update发现性能很差,将网上看到的回顾一下一共有以下三种主张:

1、批量update,一笔纪录update一次,性能很差

2、replace into 好像insert into ...on duplicate key update

3、创建临时表,先更新临时表,然后从临时表中update。代码如下

  真贵:这种要津需要用户有temporary 表的create 权限。

  底下是上述要津update 100000条数据的性能测试界限:

  就测试界限来看,测试其时使用replace into性能较好。

  replace into 裸舞 合集 和insert into on duplicate key update的不同在于:

  replace into 操作内容是对叠加的纪录先 delete 后 insert,要是更新的字段不全会将缺失的字段置为缺省值

  insert into 则是只update叠加纪录,不会改换其它字段。

 



我的网站
创建或修改目录:/www/wwwroot/104.219.215.234/data 失败!
JzEngine Create File False