日期:2014-05-16  浏览次数:20812 次

mysql批量修改请教!
SQL code

aa表中有id,username,email三个字段。原本有些数据。 我想实现根据样本中给出邮箱批量更新username的值。

样本:
username            email
21631259    bin.lu@aa.com
645474            bb_yang@aa.com
20338332    aa.zhao@aa.com
21743745    jie.chen6@aa.com
20031229    hai-jing.zhao@aa.com
21685028    dc.yao@aa.com
20132408    at-hua.wang@aa.com
20415986    db.lei@aa.com
.............
............
现在想到的是从样本中一条一条复制过来放在SQL语句中执行。数据有几千条。这样太慢了。请教各位大侠是否有简单的方法,谢谢!
UPDATE aa SET username='21631259' WHERE email='bin.lu@aa.com';




------解决方案--------------------
把样本放在一个文件里,
然后读文件,读到一条记录,接着就执行一条更新语句。
如果email在aa中没有对应的记录,那么更新就会不进行任何操作了。
几千条数据,10分钟之内绝对很快就执行完了。
------解决方案--------------------
其实,使用ultraedit编辑器,大概一两分钟就把这个SQL文件给生成了。
参考列编辑模式。
------解决方案--------------------
update aa set username=substring_index(email,'@',1);
------解决方案--------------------
用LOAD DATE INIFILE导入 文本文件,再替换
LOAD DATE INIFILE 'r:/123.txt'into TABLE 样本;
update aa a inner join 样本 b on a.email=b.email set a.username=b.username