加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 - 核心网 (https://www.hexinwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Mysql中如何实现Update批量更新

发布时间:2022-02-13 06:35:38 所属栏目:MySql教程 来源:互联网
导读:Mysql中怎么实现Update批量更新,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 通常情况下,我们会使用以下SQL语句来更新字段值: UPDATE mytable SET myfield=value WHERE other_field=
       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批量更新的方法了吗?

(编辑:拼字网 - 核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!