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

来源:互联网 发布:java filter过滤器 编辑:程序博客网 时间:2024/06/14 13:22

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

源SQL语句:

delete from t_official_sys_userwhere 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_userwhere 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_userwhere 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 0