• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Mysql Update批量更新的几种方式

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

    UPDATE mytable SET myfield='value' WHERE other_field='other_value';

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

    for x in xrange(10):
      sql = ''' UPDATE mytable SET myfield='value' WHERE other_field='other_value'; '''

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

    UPDATE mytable
      SET myfield = CASE other_field
        WHEN 1 THEN 'value'
        WHEN 2 THEN 'value'
        WHEN 3 THEN 'value'
      END
    WHERE id IN (1,2,3)

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

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

    UPDATE categories
      SET display_order = CASE id
        WHEN 1 THEN 3
        WHEN 2 THEN 4
        WHEN 3 THEN 5
      END,
      title = CASE id
        WHEN 1 THEN 'New Title 1'
        WHEN 2 THEN 'New Title 2'
        WHEN 3 THEN 'New Title 3'
      END
    WHERE id IN (1,2,3)

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

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

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

    update_sql = ''' UPDATE mayi_order_image 
    set order_city = %s
    where user_ip = %s and dt = %s and id = %s 
     and user_ip is not null and (order_city is null or order_city = '' )
     '''
    pp = []
    for x in xrange(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_))
      if x%5000 == 0:
        saveLog_many(update_sql,pp)
        pp = []
    saveLog_many(update_sql,pp)

    是不是这个更方便一些 但是吗 速度 问题 我感觉可以和第二种结合一下对比一下会更好呢

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

    您可能感兴趣的文章:
    • MySQL UPDATE更新语句精解
    • Mysql联表update数据的示例详解
    • 实例验证MySQL|update字段为相同的值是否会记录binlog
    • mysql update语句的执行过程详解
    • MySQL select、insert、update批量操作语句代码实例
    • Mysql update多表联合更新的方法小结
    • MySQL执行update语句和原数据相同会再次执行吗
    • mysql事务select for update及数据的一致性处理讲解
    • MySQL中参数sql_safe_updates在生产环境的使用详解
    • MYSQL updatexml()函数报错注入解析
    • mysql中错误:1093-You can’t specify target table for update in FROM clause的解决方法
    • mybatis执行批量更新batch update 的方法(oracle,mysql两种)
    • 记一次MySQL更新语句update的踩坑
    上一篇:抽取oracle数据到mysql数据库的实现过程
    下一篇:使用SQL语句统计数据时sum和count函数中使用if判断条件的讲解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Mysql Update批量更新的几种方式 Mysql,Update,批量,更,新的,