mysql 批量更新

今天看快完结的项目,发现一些垃圾数据,由于数据与程序不匹配导致firefox报错,只是一些小问题,当时那个表的数据大约两百条,而我要修改的大约100条—150条,我可以打开navite在表里改,后来决定写sql语句改吧,反正也闲着,但是问题出现了,由于以前经常写oracle的sql,没有意思到mysql与oracle的不同,所以写法如下update Table1 set a =  ‘asdasda’ where id in (select  id  from Table1 where a = ‘’ or a is null);结果死活过不去,没办法继续上网找答案 ,看了才知道原来 “目前,您不能在一个子查询中更新一个表,同时从同一个表中选择。”  摘自http://database.51cto.com/art/201005/201953.htm 于是又查了http://blog.sina.com.cn/s/blog_3f776cca0100xka5.html 最后决定使用replace into test_tbl (id,dr) values(1,'2'),(2,'3'),...(x,'y'); 结果问题又出现了 navite也就是mysql报了个错是Field '字段' doesn't have a default value 上网一查,解决的方法地址如下http://blog.sina.com.cn/s/blog_43ed7f260100fk6h.html 我先是使用方法一,想改my.ini 结果电脑说它是只读的,我改了属性里的设置,把只读的勾去掉,结果再查看属性仍然是只读。没办法只有再使用方法2了,GotoStart-->Programs-->MySQL->MySQLInstance Config Wizard. Follow through the Reconfigure Instanceoption-->DetailedConfiguration-->Continue Next a few screens. At thebottom under Enable TCP/IP option there is 'Enable Strict Mode'.Deslect this option (no tick). Save changes and MySQL willrestart 大意就是重新配置一下你的数据库,只在'Enable Strict Mode' 不打勾就可以了,然后保存配置就OK了,果然就可以运行了。 不过我刚刚又打开了一下MySQLInstance Config Wizard,想看看里面的Enable Strict Mode,但是我发现还是有勾的,我也不算深究,如果有哪位高手请给我留言。话题说远了,最后replace into test_tbl (id,dr) values(1,'2'),(2,'3'),...(x,'y');就可以执行了,但是我一开始的初衷是应该这样的。 就是id = /in/on (变量) 这个变量就是那个sql语句 select  id  from Table1 where a = ‘’ or a is null 但是网上写的update只是执行一些固有字段的更新,也许解决这个问题应该用到 mysql的存储过程吧。不过我不打算继续研究了。因为我已经知道怎么批量更新固有数据了,也就是说,假如以后领导要我做这方面的,我就明白该怎么写了,就是把前台的 (标识,改变字段)拿到再进行拼接,最后用replace into test_tbl (id,dr) values(1,'2'),(2,'3'),...(x,'y');就OK了,这里注意一下,我不知道什么原因,只是有些字段会随着这条更新语句有所改变,要解决也容易,你就把他们全都修改即可,也就是replace into test_tbl (id,dr,a,b,c) values(1,'2',a,b,c),也许有人说我不求甚解吧,但是我真的觉得没必要继续研究我那个思路了我当时是想把oracle语句update Table1 set a =  ‘asdasda’ where id in (select  id  from Table1 where a = ‘’ or a is null)转换成mysql,但是后来在网上看到的并不能解决我这问题,我当时试了一下这个replace into test_tbl (id,dr) values((select  id  from Table1 where a = ‘’ or a is null),'qq');但是出错,You can't specify target table 'Table1' for update in FROM clause,大意就是说 你不能 指定 目标表 的 更新 Table1 在 FROM子句。所以我认为要真正解决我这个问题大约需要用到mysql的储存过程吧,说白了,这不是客户需求,而是我想处理自己的垃圾数据,要是领导明确要求的话,我或许会研究一下mysql的存储过程的,呵呵,希望能帮到你们。这里也有些疑问,如果高手路过,能解答就跟好了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值