删除重复数据只保留一条数据
一、表结构与数据
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 ”】不能在同一表中查询的数据作为同一表的更新数据。
删除重复数据只保留一条数据相关推荐
- mysql删除重复记录只保留一条
2019独角兽企业重金招聘Python工程师标准>>> 删除表中重复记录,只保留一条: delete from 表名 where 字段ID in (select * from (se ...
- 【数据库】Mysql删除重复记录只保留一条
实际工作中,有可能会对数据库中的数据进行再次加工.假设有个表记录的是技术文章,有三个字段:st_link(文章链接).st_title(文章章节标题).st_name(文章名称) 假设初始时主键为st ...
- oracle 快速移动数据和删除重复数据但保留其中一条数据
在项目中会遇到将一个表的部分数据移动另一个表中的事情. insert into table1 (id,其他属性) select t.a,t.c...from table2 t 注意属性类型大小要一致 ...
- mysql 删除重复数据只保留一条记录
删除重复数据保留name中id最小的记录 delete from order_info where id not in (select id from (select min(id) as id fr ...
- MySQL批量删除所有重复数据只保留一条
-- 1.创建数据库及t_user表 CREATE DATABASE IF NOT EXISTS `test` DEFAULT CHARACTER SET utf8;USE `test`;DROP T ...
- sql 删除重复数据 只保留一条
oracle 删除重复数据 只保留一条 DELETE from t_ows_compelete_rfc WHERE operation_no is null IN ( SELECT operation ...
- MySql删除重复数据(只保留一条)
MySql删除重复数据 1. 问题引入 前一段遇到MySql数据重复的问题.由于重复向同一张表导入同一批数据,导致前台展示的数据重复,唯一方便快捷的方法莫过于利用delete操作删除重复数据(已经封板 ...
- mysql 删除重复数据 保留一个_MySQL学习笔记-删除重复数据只保留一条
有这样一张表,表数据及结果如下: 可以看出,school_name的字段值有重复数据(Abraham Lincoln High School 和Agoura High School分别出现两次),那么 ...
- mysql数据库删除重复的数据只保留一条
问题引入 假设一个场景,一张用户表,包含 3 个字段:id,identity_id,name. 现在身份证号 identity_id 和姓名 name 有很多重复的数据,需要删除多余数据只保留一条有效 ...
最新文章
- 【MySql】8.多对多关系表
- java filesystem 追加_java 如何往已经存在的excel表格里面追加数据的方法
- 【错误记录】Visual Studio 编译 C++ 代码报错 ( To disable deprecation, use _CRT_SECURE_NO_WARNINGS. )
- 汉恩互联「绘动画室」,触摸背景墙
- 软设考试笔记--数据库系统
- 百度商业大规模微服务分布式监控系统-凤睛
- java初学课程_作为java新手应该学习什么课程
- ubuntu装jdk
- 注意!最新.Net Framework与Exchange 的兼容性问题
- 以太坊 node data write error_那个坚持写了四年《每周以太坊》的劳模分享关于以太坊的最新看法...
- vasp程序对计算机的要求,OpenMPI环境下的VASP软件的并行与进程
- 软件需求最佳实践笔记(二)
- c语言混响,混响插件( 2cAudio Aether)
- 基于SSM的个人博客系统
- PS图层批量处理插件,支持Win、Mac系统
- 最完整的国内手机号段
- 用pageOffice插件实现 word文档在线填充指定数据
- 分支定界 matlab,使用MATLAB实现分枝定界法求解整数规划的详细资料说明
- 看书不花钱,直接进网站~~~24个图书网址
- 【postgresql】centos7安装postgresql-devel步骤