数据库 \ MySQL \ Mysql删除重复数据

Mysql删除重复数据

总点击41
简介:测试表结构 CREATETABLE`testdeleterepetition`( `id`int(3)defaultNULL, `name`varchar(32)defaultNULL, `hobby`varchar(32)defaultNULL,

测试表结构

CREATE TABLE `testdeleterepetition` (

`id` int(3) default NULL,

`name` varchar(32) default NULL,

`hobby` varchar(32) default NULL,

`job` varchar(32) default NULL,

`cc` varchar(2) default NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1

CREATE TABLE `testdeleterepetition2` (

`id` int(3) default NULL,

`extend` varchar(32) default NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1


表testdeleterepetition中的数据


insert into `testdeleterepetition` (`id`,`name`,`hobby`,`job`,`cc`) values('1','steve','11','22','33');

insert into `testdeleterepetition` (`id`,`cc`) values('2','ali','33','44');

insert into `testdeleterepetition` (`id`,`cc`) values('3',`cc`) values('4','cs','12','32','43');

insert into `testdeleterepetition` (`id`,`cc`) values('5',`cc`) values('6',`cc`) values('7','aa','fe','dv');


表testdeleterepetition2中的数据


insert into `testdeleterepetition2` (`id`,`extend`) values('1','1');

insert into `testdeleterepetition2` (`id`,`extend`) values('2',`extend`) values('3',`extend`) values('4','2');

insert into `testdeleterepetition2` (`id`,`extend`) values('5',`extend`) values('6',`extend`) values('7','2');删除testdeleterepetition中name、hobby、job、cc字段重复的列,保留id最小的列


DELETE FROM testdeleterepetition

WHERE id NOT IN (SELECT t.minid FROM (SELECT MIN(id) minid FROM `testdeleterepetition`

GROUP BY NAME,hobby,job) t);删除testdeleterepetition表中的重复数据,保留最小id,且和testdeleterepetition2表通过id字段关联,取testdeleterepetition2表extend字段为1为限制条件

DELETE testdeleterepetition a

FROM testdeleterepetition a

INNER JOIN testdeleterepetition2 b

ON a.`id`=b.`id`

WHERE a.id NOT IN (SELECT t.minid FROM (SELECT MIN(id) minid FROM `testdeleterepetition`

GROUP BY NAME,job) t)

AND b.extend=1;


意见反馈 常见问题 官方微信 返回顶部