您好,匿名用户
随意问技术百科期待您的加入

是否有批量更新MySQL数据的方法

0 投票

初学编程,遇到需要批量更新的数据时,我的做法是用循环语句写入每一条数据,也就是每条更新要写一次数据库。自己也发现这样做效率很低,想是如果请求一次就能更新所有数据该有多好,特来寻找答案。

比如现在有下列数据:

Name   id   ScoreA   ScoreB
Jim    1    90       91
Ken    2    92       93
Kate   3    97       95
Lily   4    95       98

当我要更新这些人的分数时,用下列语句:

UPDATE table SET ScoreA = 99 WHERE id = 1;
UPDATE table SET ScoreA = 96 WHERE id = 2;
UPDATE table SET ScoreB = 93 WHERE id = 2;
UPDATE table SET ScoreB = 94 WHERE id = 3;
UPDATE table SET ScoreA = 95 WHERE id = 4;

不知道有没有更高效的方法?

用户头像 提问 2012年 12月1日 @ Olaf 上等兵 (366 威望)
分享到:

1个回答

0 投票
 
最佳答案
  1. 从SQL语法角度,不存在一条SQL更新多条的SQL语法(UPDATE table1 SET col1=1 WHERE id>1这样的不算),只有一次插入多条的:INSERT INTO table1 (col1, col2) VALUES (value_1_1, value_1_2),(value_2_1, value_2_2),(value_3_1, value_3_2);
  2. 从通信协议角度,你可以把多条SQL用分号隔开,一次性发送给数据库服务器执行,这样就达到了你请求一次更新多条的效果,为保证原子性,你可能得开启事务。HandlerSocket支持Bulk insert,但是否支持bulk update我没查到明文证据,我推测是不支持的。
  3. 新人有追根溯源精神很好,欢迎继续探究此类问题,同时也要多利用搜索引擎寻找答案。等你实际工作后,不建议在这个问题上浪费时间,每发送一个SQL就更新一条挺好的,不算很低效
用户头像 回复 2012年 12月1日 @ Maokai 上等兵 (292 威望)
选中 2012年 12月1日 @Olaf
提一个问题:

相关问题

0 投票
1 回复 29 阅读
用户头像 提问 2013年 11月30日 @ Amumu 上等兵 (340 威望)
0 投票
1 回复 36 阅读
0 投票
1 回复 35 阅读
用户头像 提问 2012年 12月1日 @ Pikachu 上等兵 (475 威望)
0 投票
1 回复 31 阅读
+1 投票
1 回复 39 阅读
用户头像 提问 2012年 12月1日 @ Janna 下士 (667 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...