首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >[1053]mysql 1093 - You can‘t specify target table ‘a‘ for update in FROM clause

[1053]mysql 1093 - You can‘t specify target table ‘a‘ for update in FROM clause

作者头像
周小董
发布于 2021-10-13 15:59:27
发布于 2021-10-13 15:59:27
1.1K0
举报
文章被收录于专栏:python前行者python前行者

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

如: customer 银行客户信息表

bankInfo 银行账户

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

代码语言:javascript
复制
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语句时出现这个错误,是因为

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

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

代码语言:javascript
复制
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);

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

来源:https://blog.csdn.net/qq_51444577/article/details/117774420

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/10/11 ,如有侵权请联系 cloudcommunity@tencent.com 删除
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档