MySQL can’t specify target table for update in FROM clause

 翻译:MySQL不能指定更新的目标表在FROM子句

源SQL语句:

delete from t_official_sys_user
where USER_NAME IN(SELECT USER_NAME FROM t_official_sys_user b group by b.`USER_NAME` having  count(1) > 1)


执行报以下错误:

[SQL] 

delete from t_official_sys_user
where USER_NAME IN(SELECT USER_NAME FROM t_official_sys_user b group by b.`USER_NAME` having  count(1) > 1)

[Err] 1093 - You can't specify target table 't_official_sys_user' for update in FROM clause


解决代码如下:

delete from t_official_sys_user
where USER_NAME IN(select USER_NAME from ( SELECT USER_NAME FROM t_official_sys_user b group by b.`USER_NAME` having  count(1) > 1) as temtable );


分析:

先把要删除的目标放到一张临时表再把要删除的条件指定到这张临时表即可。


引用\[1\]:这是一个正确的UPDATE语句示例,它将t_user表id为'U0123456789'的记录的user_name字段更新为t_user表任意一条记录的user_name字段的值,并将update_time字段更新为当前时间。\[1\] 引用\[2\]:这是一个错误的UPDATE语句示例,它试图在子查询更新目标表t_user的字段user_name,这是不允许的。\[2\] 引用\[3\]:这是一个引发报错的SQL语句示例,报错信息为"You can't specify target table 'email' for update in FROM clause"。这个错误通常是由于在UPDATE语句的子查询引用了目标表本身导致的。解决这个问题的方法是使用临时表或者将子查询的结果存储到变量,然后再进行更新操作。\[3\] 问题:You can't specify target table 'email' for update in FROM clause 回答:这个错误通常是由于在UPDATE语句的子查询引用了目标表本身导致的。解决这个问题的方法是使用临时表或者将子查询的结果存储到变量,然后再进行更新操作。 #### 引用[.reference_title] - *1* *2* [You can‘t specify target table for update in FROM clause](https://blog.csdn.net/aayygg1234/article/details/121753911)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [MySql:You can not specify target table for update in FROM clause错误](https://blog.csdn.net/qq_42213910/article/details/106918293)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值