一、表结构与数据

CREATE TABLE `duptab` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(255) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
INSERT INTO `duptab`(`name`) VALUES ('a');
INSERT INTO `duptab`(`name`) VALUES ('a');
INSERT INTO `duptab`(`name`) VALUES ('a');
INSERT INTO `duptab`(`name`) VALUES ('a');
INSERT INTO `duptab`(`name`) VALUES ('b');
INSERT INTO `duptab`(`name`) VALUES ('b');
INSERT INTO `duptab`(`name`) VALUES ('b');
INSERT INTO `duptab`(`name`) VALUES ('b');
INSERT INTO `duptab`(`name`) VALUES ('c');
INSERT INTO `duptab`(`name`) VALUES ('c');
INSERT INTO `duptab`(`name`) VALUES ('c');

二、查询出重复的数据

select name,count(*) from duptab GROUP BY name  HAVING count(name)>1;

三、查询出要保留的重复数据

select min(id) ids,name from duptab GROUP BY NAME HAVING COUNT(name)>1;

四、正确写法

delete from duptab
where
name in (select * from (select name from duptab group by name  having count(name)>1) a)
and
id not in (select * from (select min(id) from duptab group by name having count(name)>1) b);

五、错误写法

delete from duptab
where
name in (select name from duptab group by name having count(name)>1)
and
id not in (select MIN(id) ids from duptab group by name having count(name)>1)

报错:You can’t specify target table 'duptab ’ for update in FROM clause。【不能在 from 子句中为 update 指定目标表“duptab ”】不能在同一表中查询的数据作为同一表的更新数据。

删除重复数据只保留一条数据相关推荐

  1. mysql删除重复记录只保留一条

    2019独角兽企业重金招聘Python工程师标准>>> 删除表中重复记录,只保留一条: delete from 表名 where 字段ID in (select * from (se ...

  2. 【数据库】Mysql删除重复记录只保留一条

    实际工作中,有可能会对数据库中的数据进行再次加工.假设有个表记录的是技术文章,有三个字段:st_link(文章链接).st_title(文章章节标题).st_name(文章名称) 假设初始时主键为st ...

  3. oracle 快速移动数据和删除重复数据但保留其中一条数据

    在项目中会遇到将一个表的部分数据移动另一个表中的事情. insert into table1 (id,其他属性) select t.a,t.c...from table2 t 注意属性类型大小要一致 ...

  4. mysql 删除重复数据只保留一条记录

    删除重复数据保留name中id最小的记录 delete from order_info where id not in (select id from (select min(id) as id fr ...

  5. MySQL批量删除所有重复数据只保留一条

    -- 1.创建数据库及t_user表 CREATE DATABASE IF NOT EXISTS `test` DEFAULT CHARACTER SET utf8;USE `test`;DROP T ...

  6. sql 删除重复数据 只保留一条

    oracle 删除重复数据 只保留一条 DELETE from t_ows_compelete_rfc WHERE operation_no is null IN ( SELECT operation ...

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

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

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

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

  9. mysql数据库删除重复的数据只保留一条

    问题引入 假设一个场景,一张用户表,包含 3 个字段:id,identity_id,name. 现在身份证号 identity_id 和姓名 name 有很多重复的数据,需要删除多余数据只保留一条有效 ...

最新文章

  1. 【MySql】8.多对多关系表
  2. java filesystem 追加_java 如何往已经存在的excel表格里面追加数据的方法
  3. 【错误记录】Visual Studio 编译 C++ 代码报错 ( To disable deprecation, use _CRT_SECURE_NO_WARNINGS. )
  4. 汉恩互联「绘动画室」,触摸背景墙
  5. 软设考试笔记--数据库系统
  6. 百度商业大规模微服务分布式监控系统-凤睛
  7. java初学课程_作为java新手应该学习什么课程
  8. ubuntu装jdk
  9. 注意!最新.Net Framework与Exchange 的兼容性问题
  10. 以太坊 node data write error_那个坚持写了四年《每周以太坊》的劳模分享关于以太坊的最新看法...
  11. vasp程序对计算机的要求,OpenMPI环境下的VASP软件的并行与进程
  12. 软件需求最佳实践笔记(二)
  13. c语言混响,混响插件( 2cAudio Aether)
  14. 基于SSM的个人博客系统
  15. PS图层批量处理插件,支持Win、Mac系统
  16. 最完整的国内手机号段
  17. 用pageOffice插件实现 word文档在线填充指定数据
  18. 分支定界 matlab,使用MATLAB实现分枝定界法求解整数规划的详细资料说明
  19. 看书不花钱,直接进网站~~~24个图书网址
  20. 【postgresql】centos7安装postgresql-devel步骤

热门文章

  1. ABAQUS切削模拟
  2. edge无法登录账户_系统天地教你解决win10 microsoft edge浏览器无法开的问题
  3. 微信小游戏胶囊按钮适配
  4. 深度学习在图像领域的应用
  5. java double转float_如何将double转换成float类型
  6. 用HTML加css制作立体方块,CSS3 三维变形实现立体方块特效源码
  7. 近期准备秋招的一些体会
  8. Vue——基础语法篇
  9. 如何完成微信小程序的登录功能
  10. 在c语言程序中使用数据库,数据库与C语言程序设计两者之间有什么联系?