You can't specify target table 'table_A' for update in FROM clause
发布日期:2021-11-18 19:17:42 浏览次数:14 分类:技术文章

本文共 379 字,大约阅读时间需要 1 分钟。

Mysql在del和update时含子查询会报此错

-->因为在MYSQL里,不能先select一个表的记录,再按此条件进行更新和删除同一个表的记录

解决办法是,将select得到的结果,再通过中间表select一遍,这样就规避了错误,

这个问题只出现于mysql,mssql和不会出现此问题

详情看sql:

原报错sql:

UPDATE table_A SET status=1 WHERE A_id IN(  SELECT order_id FROM table_A_B WHERE B_id=23)

修改后的sql:

UPDATE table_A SET status=1WHERE A_id IN(SELECT a.id FROM ( SELECT id FROM table_A_B WHERE B_id=23) a)

相当于对内子循环起了一个别名

转载地址:https://blog.csdn.net/weixin_39207535/article/details/88547757 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:编写接口时发送一次请求,控制台打印两次
下一篇:Java POI实现大批量数据导出到excel

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年04月25日 06时57分24秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章