Mysql中怎么实现Update批量更新

53次阅读
没有评论

共计 1634 个字符,预计需要花费 5 分钟才能阅读完成。

自动写代码机器人,免费开通

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 批量更新的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注丸趣 TV 行业资讯频道,感谢各位的阅读!

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计1634字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)