1、创建测试表`group`
CREATE TABLE `group` (`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键id',`name` varchar(32) NOT NULL DEFAULT '' COMMENT '名字',`addr` varchar(255) NOT NULL DEFAULT '' COMMENT '地址',PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=gbk COMMENT='group';
2、导入测试数据
insert into `group`(name, addr) values('a', 'a1'),('b', 'b1'),('a', 'a2'),('b', 'b2');
3、求name重复id最大的数据结果
MySQL> select name, addr,max(id) from `group` group by name;错误mysql> select id, name, addr from `group` where id in (select max(id) from `group` group by name);正确mysql> select t2.maxid as id, t1.name, t1.addr from `group` t1 inner join (select max(id) as maxid,name from `group` group by name) t2 on t1.id = t2.maxid; 正确
4、删除name重复数据,保留id最大的数据 。(先备份再操作)
mysql> delete from `group` where id not in (select max(id) as id from `group` group by name);错误mysql> delete from `group` where id not in (select t1.id from (select max(id) as id from `group` group by name) t1); 正确
5、查询name重复数据结果
mysql> select name,count(1) as total from `group` group by name having total > 1;
【MySQL表数据去重几个业务逻辑实现】
推荐阅读
- 无代码系统搭建——数据报表
- 数据结构 --- AVL树
- 医药销售代表如何接近客户
- 如何确保数据与人工智能的完整性?
- 手把手教你分析解决MySQL死锁问题
- SQL如何删除重复数据
- 露营|去哪儿五一大数据:露营类旅游产品预订涨幅超3倍
- 从根上彻底理解MySQL的索引
- # MySQL server 层和存储引擎层是怎么交互数据的?
- MySQL 占用 CPU 过高问题定位及优化