解决mysql更新表数据时的出错信息 “ [Err] 1093 - You can‘t specify target table ‘a‘ for update in FROM clause ”

报错意思是:不能在from子句中指定要更新的目标表 a

如:

customer 银行客户信息表

bankInfo 银行账户

修改张三的银行卡密码为123456:

update bankInfo as a set `password`=123456 

where a.idCard=(select b.idCard from bankInfo as b where NameId=

(select NameId from customer where `Name`='张三')); # 不能在from子句中指定要更新的目标表

执行上面SQL语句时出现这个错误,是因为

在更新这个表和数据的同时又去查询这个表数据,而查询的数据又做更新的条件,就产生了矛盾。

应这样解决:

把要更新的数据表符合要求(的几列)数据查询出来,做为一个第三方表(临时表),然后从中筛选更新。

UPDATE bankInfo AS a SET `password`=123456

WHERE a.idCard=(SELECT b.idCard FROM

(SELECT * FROM bankInfo WHERE NameId=(SELECT NameId from customer WHERE `Name`='张三')) AS b);

这样就可以进行表数据更新啦~

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值