MySQL 重复数据的删除小示例

在平时的学习或者工作中有时我们难免会遇到重复的数据,若想删除某些数据,保留想保留的,那我们该如何去做呢?

下面是一个删除 id 小的,保留 id 大的那条数据的小示例

1、创建我们的测试表

-- 创建测试表
drop table if exists dina_test_table;
create table dina_test_table  (
  `id` int(11),
  `name` char(255),
  `date` date ,
  `year` varchar(10) ,
  `month` varchar(10),
  `salary` decimal(10, 2)
) ;

2、向测试表插入测试数据

insert into dina_test_table values (1, 'Dina', '2020-05-15', '2020', '5', 8000.00);
insert into dina_test_table values (3, 'Augenstern', '2020-05-15', '2020', '5', 8600.00);
insert into dina_test_table values (4, 'Paradox', '2020-05-15', '2020', '5', 8500.00);
insert into dina_test_table values (5, 'Yan', '2020-05-15', '2020', '5', 8000.00);
insert into dina_test_table values (6, 'Dina', '2020-05-15', '2020', '5', 8000.00);
insert into dina_test_table values (7, 'Dina', '2020-05-15', '2020', '5', 8000.00);
INSERT into dina_test_table values (8, 'Augenstern', '2020-05-15', '2020', '5', 8600.00);

3、查看测试表里的数据数据

MySQL 重复数据的删除小示例_第1张图片

4、查看 重复数据的 name

select name,count(1) item_cnt from dina_test_table group by name having item_cnt > 1 order by item_cnt desc;

MySQL 重复数据的删除小示例_第2张图片

5、所有重复数据的详细信息

select * from dina_test_table
where name in (select name from (select name,count(1) item_cnt from dina_test_table group by name having item_cnt > 1)T1)
order by name;

MySQL 重复数据的删除小示例_第3张图片

6、找出重复数据中最大的 id 【我们保留 id 最大的】

MySQL 重复数据的删除小示例_第4张图片

 7、删除重复数据【我们保留 id 最大的】

delete from dina_test_table 
where name in (select name from (select name from dina_test_table group by name having count(1) > 1)T1)
and id not in (select max_id from (select max(id) max_id from dina_test_table group by name having count(1) > 1)T2);

8、查看我们删除后的数据:

MySQL 重复数据的删除小示例_第5张图片

9、看一下我们的删除前后的数据对比,左图是原始数据,右图是删除后的数据:

MySQL 重复数据的删除小示例_第6张图片

你可能感兴趣的:(数据库,MySQL)