哇,这个问题在纠结了N个小时总算解决了!

解决方案:

-- 在命令行方式中输入
delete from 表名 where id
in (select id from (select id from 表名where (表名.字段1,表名.字段2) in (select 字段1,字段2 from 表名 group by 字段1,字段2 having count(*) > 1)and id not in (select min(id)  from 表名 group by 字段1,字段2 having count(*)>1)
)as temp );
  1. 在mysql命令行模式下(不能使用workbench)首先选择数据库,然后再使用这个SQL语句
  2. 只需修改 id(唯一标识) , 表名 ,字段1,字段2,当然,如果有更多可能重复的字段,可以继续加 字段3 字段4 字段N 。

解释:

首先,确认能够查询到重复的数据项:

id 字段1 字段2
1 xxx xxx
2 xxx xxx
select * from 表名
where (表名.字段1,表名.字段2)
in(select 字段1,字段2 from 表名 group by 字段1,字段2 having count(*) > 1)
and id not in (select min(id) from 表名 group by 字段1,字段2 having count(*)>1)

替换上面的sql语句的 ‘表名’ , ‘字段1’ , ‘字段2’ , ‘id’ 运行后即可返回想要删除的记录

如果按照传统(或网上大多数复制粘贴的答案),会这样进行数据的删除(2,3,4行没变,就改了第一行):

delete from 表名
where (表名.字段1,表名.字段2)
in(select 字段1,字段2 from 表名 group by 字段1,字段2 having count(*) > 1)
and id not in (select min(id) from 表名 group by 字段1,字段2 having count(*)>1)

注意:

  1. 在mysql workbench里面出现的这类型报错是不会提示的,左下角直接就是 query interrupt ,想要知道报错原因,可以用命令行方式登录mysql
  2. 这样的SQL其实并没有错,如果在sql server或是oracle里是可以成功执行的,但是在mysql中是不允许的,原因不详

确认可以通过查询来找到重复的数据(这里重复的数据只保留一条,且这一条是id最小的)后,可以使用这样的方法:

delete from 表名 where id
in (select id from (select id from 表名where (表名.字段1,表名.字段2) in (select 字段1,字段2 from 表名 group by 字段1,字段2 having count(*) > 1)and id not in (select min(id)  from 表名 group by 字段1,字段2 having count(*)>1)
)as temp );

这里缩进的部分与上面查询的代码大致相同,可以复制粘贴后将 * 改为 id。

Mysql删除重复数据并解决You can't specify target table 'xx' for update in FROM clause 报错与 query interrupted报错相关推荐

  1. mysql 删除重复数据 保留一个_MySQL学习笔记-删除重复数据只保留一条

    有这样一张表,表数据及结果如下: 可以看出,school_name的字段值有重复数据(Abraham Lincoln High School 和Agoura High School分别出现两次),那么 ...

  2. MySql删除重复数据(只保留一条)

    MySql删除重复数据 1. 问题引入 前一段遇到MySql数据重复的问题.由于重复向同一张表导入同一批数据,导致前台展示的数据重复,唯一方便快捷的方法莫过于利用delete操作删除重复数据(已经封板 ...

  3. Mysql 删除重复数据保留一条有效数据

    ============================== ©Copyright 蕃薯耀 2023-01-31 蕃薯耀的博客_CSDN博客-蕃薯耀分享,java,js领域博主 一.Mysql 删除重 ...

  4. MySQL删除重复数据只保留最新的一条

    MySQL删除重复数据并保留最新的一条,网上有些博客写的有问题,因为他们只考虑到或者说他们的重复数据最多只有两条,当重复数据大于2时,就会出现问题. 案例描述: 按天删除表中重复数据只保留最新的一条( ...

  5. MySQL 语法问题:You can‘t specify target table ‘xxx‘ for update in FROM clause. 原因及解决方法

    报错信息如下: [Code: 1093, SQL State: HY000] You can't specify target table 'bd_bankaccbas' for update in ...

  6. 错误:You can't specify target table 'xxx' for update in FROM clause的解决

    今天在MySQL数据库删除重复数据的时候遇到了一个问题.如下脚本: DELETE FROM tempA WHERE tid IN ( SELECT MAX(tid) AS tid FROM tempA ...

  7. MySQL||SQL_ERROR_INFO: “You can‘t specify target table ‘titles_test‘ for update in FROM clause“

    一.问题描述 假定test数据库存在表titles_test,表内数据如下: 先要求删除emp_no重复的记录,只保留最小的id对应的记录.编写代码如下: delete from titles_tes ...

  8. [Err] 1093 - You can't specify target table 'xxx' for update in FROM clause解决方法

    执行开发同学提供的删除数据的sql时报错[Err] 1093 - You can't specify target table 'run_result' for update in FROM clau ...

  9. mysql实战(五)—— You can‘t specify target table ‘org_department‘ for update in FROM clause

    系列文章目录 You can't specify target table 'org_department' for update in FROM clause 系列文章目录 背景 具体实现过程 1. ...

最新文章

  1. oracle hint push_pred,hints的push_pred应用-Oracle
  2. LOL手游2.3版皮肤大更新,端游玩家:新春级和珍稀级会返场吗
  3. 高通驱动一键安装_一键重装神器,装系统简单的超乎想象!
  4. 11_less中的条件判断
  5. LaTeX公式打出U上面一个小圈表示去心领域的符号:\mathring{U}
  6. [从架构到设计]第一回:设计,应该多一点
  7. 自学了三天的SeaJs学习,解决了前端的一些问题,与小伙伴们一起分享一下!...
  8. Mac终端使用rzsz
  9. usc2_今天发布:与USC合作的新游戏设计课程
  10. 液压传动理论教学实训
  11. f1c100s 源码_GitHub - hcly/f1c100s: f1c100s source code
  12. 云计算概念的基本介绍,云计算的特点主要有哪些?
  13. 喉咙肿痛症状似流感 常州一男子延误治疗险送命
  14. MAC 清除 DNS 缓存
  15. Apache Hudi的编译及安装
  16. Redis - Expire Setex
  17. 如何注册我的世界服务器账号密码,我的世界电脑服务器怎么注册登录密码
  18. Android斗地主游戏源码
  19. GeoHash算法获取附近店铺和距离
  20. ZYNQ PL中断PS

热门文章

  1. 期权、RSU的区别与行权事宜
  2. spring之集合注入
  3. saltstack自动化运维系列②之saltstack的数据系统
  4. ise和modelsim联合仿真的一些准备
  5. 简短—揭开数学学科对于计算机应用的神秘面纱
  6. Asp.Net 控件生命周期
  7. 今天的天气好热哦!!!
  8. python神经网络训练_Python深度学习训练神经网络
  9. php判断是不是纯汉字,php判断输入是否是纯数字,英文,汉字的方法
  10. 机器人最大的人类士人禾力积木_奇妙的机器人世界15(二)