223
文章
5
说说
65
评论
113821
访问

个人博客网站:prettywordpress.com(吃饭用大碗的程序猿)

最新评论
qq_avatar
1月前,”ヘル”在《码农=新生代农民工》
说:打卡@[huaixiao]
qq_avatar
2月前,”肋巴骨”在《Win10系统桌面一直闪屏自动刷新怎么办》
说:不错啊,这是谁写的教程,真棒
qq_avatar
3月前,”逗小沫”在《2021最新PhpStorm+wamp+Xdebug调试wordpress》
说:大佬不考虑加个灯箱吗,图片不能放大
qq_avatar
3月前,”逗小沫”在《2021最新PhpStorm+wamp+Xdebug调试wordpress》
说:pjax失效咋办,F12显示已取消
qq_avatar
3月前,”热爱”在《2021最新PhpStorm+wamp+Xdebug调试wordpress》
说:测试Markdown语法加表情 OωO@(暗地观察)@[哈哈]@[ganga]
A+

You can’t specify target table ‘xxx’ for update in FROM clause-mysql报错

标签: 最后编辑:2020年6月22日

起因:在批量删除数据的时候报错You can’t specify target table ‘xxx’ for update in FROM clause,一开始没有考虑到不能再一条SQL里面同时查询和更新同一张表的数据,所以才导致报错。

报错原因:不能在一条sql语句中查询相同表的某些值,然后再更新表或者删除表。
解决办法:利用中间表包裹查询出来的数据之后再进行更新或者删除。
更新表错误示范

更新表: update a表 set name = "马大哈" where id in (select id from a表 where id is not null) 

更新表正确示范

更新表: update a表 set name = "马大哈" where id in (select id from (select id from a表 where id is not null) b表 ) 

删除表错误示范

删除表: delete from a表 where id in (select id from a表 where id is not null) 

删除表正确示范

delete from a表 where id in (select id from (select id from a表 where id is not null)b表 ) 

上面的示范都是采用B表当中间表来更新和删除,这样就避免在一条SQL里面同时查询和删除同一张表的数据。

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

发表一下你的评论呗

回复评论代表你同意网站的 隐私政策

... 友情提示 请保留版权标识
复制成功!
目录