Mysql 报错 “You can‘t specify target table ‘tablename‘ for update in FROM clause“ 解决方案

编程入门 行业动态 更新时间:2024-10-11 17:19:43

Mysql <a href=https://www.elefans.com/category/jswz/34/1771188.html style=报错 “You can‘t specify target table ‘tablename‘ for update in FROM clause“ 解决方案"/>

Mysql 报错 “You can‘t specify target table ‘tablename‘ for update in FROM clause“ 解决方案

问题描述:

 执行SQL实现重复数据去重保留一条数据,报错 "You can't specify target table 'tablename' for update in FROM clause" 。

原报错SQL:

DELETE
FROMkng_user_study
WHEREid IN (SELECTb.idFROMkng_user_study bWHEREb_id = 'dc9de391-e4e9-4704-a881-ba7b74a37e57'AND b.kng_id IN (SELECTa.kng_idFROMkng_user_study aWHEREa_id = 'dc9de391-e4e9-4704-a881-ba7b74a37e57'GROUP BYa.user_id,a.kng_idHAVINGcount(*) > 1)AND b.user_id IN (SELECTa.user_idFROMkng_user_study aWHEREa_id = 'dc9de391-e4e9-4704-a881-ba7b74a37e57'GROUP BYa.user_id,a.kng_idHAVINGcount(*) > 1)AND b.id NOT IN (SELECTmin(a.id)FROMkng_user_study aWHEREa_id = 'dc9de391-e4e9-4704-a881-ba7b74a37e57'GROUP BYa.user_id,a.kng_idHAVINGcount(*) > 1));

修改后的SQL:

DELETE
FROMkng_user_study
WHEREid IN (SELECTd.idFROM(SELECTb.idFROMkng_user_study bWHEREb_id = 'dc9de391-e4e9-4704-a881-ba7b74a37e57'AND b.kng_id IN (SELECTa.kng_idFROMkng_user_study aWHEREa_id = 'dc9de391-e4e9-4704-a881-ba7b74a37e57'GROUP BYa.user_id,a.kng_idHAVINGcount(*) > 1)AND b.user_id IN (SELECTa.user_idFROMkng_user_study aWHEREa_id = 'dc9de391-e4e9-4704-a881-ba7b74a37e57'GROUP BYa.user_id,a.kng_idHAVINGcount(*) > 1)AND b.id NOT IN (SELECTmin(a.id)FROMkng_user_study aWHEREa_id = 'dc9de391-e4e9-4704-a881-ba7b74a37e57'GROUP BYa.user_id,a.kng_idHAVINGcount(*) > 1)) d);

结果分析:

把 select b.id from kng_user_study b where  ...的结果集再另存为新表,自查一遍,这样就独立出来不跟原kng_user_study表有关联,可解决此报错。同时这也是一个典型的MySQL重复数据去重保留一条的写法,大家可以参考下。

更多推荐

Mysql 报错 “You can‘t specify target table ‘tablename‘ for update in FROM clause“

本文发布于:2024-03-06 16:58:28,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1715859.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:报错   解决方案   target   Mysql   table

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!