• ADADADADAD

    Mysql中怎么实现Update批量更新[ mysql数据库 ]

    mysql数据库 时间:2024-11-28 13:27:09

    作者:文/会员上传

    简介:

    通常情况下,我们会使用以下SQL语句来更新字段值:UPDATEmytableSETmyfield='value'WHEREother_field='other_value';但是,如果你想更新多行数据,并且每行记录的

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    通常情况下,我们会使用以下SQL语句来更新字段值:

    UPDATEmytableSETmyfield='value'WHEREother_field='other_value';

    但是,如果你想更新多行数据,并且每行记录的各字段值都是各不一样,你会怎么办呢?刚开始你可能会想到使用循环执行多条UPDATE语句的方式,就像以下的python程序示例:

    forxinxrange(10):sql='''UPDATEmytableSETmyfield='value'WHEREother_field='other_value';'''

    这种方法并没有什么任何错误,并且代码简单易懂,但是在循环语句中执行了不止一次SQL查询,在做系统优化的时候,我们总是想尽可能的减少数据库查询的次数,以减少资源占用,同时可以提高系统速度。幸运的是,还有更好的解决方案,只不过SQL语句稍微复杂点,但是只需执行一次查询即可,语法如下:

    UPDATEmytableSETmyfield=CASEother_fieldWHEN1THEN'value'WHEN2THEN'value'WHEN3THEN'value'ENDWHEREidIN(1,2,3)

    这样的SQL语句是很容易理解的,也就是用到了很多编程语言都有的关键字 CASE,根据id字段值来进行不同分支的当型判断,

    如果你需要更新一行记录的多个字段,可以用以下SQL语句:

    UPDATEcategoriesSETdisplay_order=CASEidWHEN1THEN3WHEN2THEN4WHEN3THEN5END,title=CASEidWHEN1THEN'NewTitle1'WHEN2THEN'NewTitle2'WHEN3THEN'NewTitle3'ENDWHEREidIN(1,2,3)

    以上方案大大减少了数据库的查询操作次数,大大节约了系统资源

    不过这个有个缺点 : 要注意的问题是SQL语句的长度,需要考虑程序运行环境所支持的字符串长度,当然这也可以更新mysql的设置来扩展。

    当然python这么强大的语言还给我们提供了executemany 这么强大的方法 ,它不仅可以插入数据 当然也可以用于更新数据 作为一个经常搞事情的人 这些东西要经常相互用下 才可以对比出结果

    update_sql='''UPDATEmayi_order_imagesetorder_city=%swhereuser_ip=%sanddt=%sandid=%sanduser_ipisnotnulland(order_cityisnullororder_city='')'''pp=[]forxinxrange(len(result)):ip=result[x][0]id_=result[x][1]add=dbip.lookup(str(ip))adds=add.split('\t')address=str(adds[0])+','+str(adds[1])+','+str(adds[2])pp.append((address,ip,end,id_))ifx%5000==0:saveLog_many(update_sql,pp)pp=[]saveLog_many(update_sql,pp)
    Mysql中怎么实现Update批量更新.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: mysqlupdate