Mysql删除重复数据

测试表结构

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`, `name`, `hobby`, `job`, `cc`) values('2','ali','22','33','44');
insert into `testdeleterepetition` (`id`, `name`, `hobby`, `job`, `cc`) values('3','ali','22','33','44');
insert into `testdeleterepetition` (`id`, `name`, `hobby`, `job`, `cc`) values('4','cs','12','32','43');
insert into `testdeleterepetition` (`id`, `name`, `hobby`, `job`, `cc`) values('5','cs','12','32','43');
insert into `testdeleterepetition` (`id`, `name`, `hobby`, `job`, `cc`) values('6','cs','12','32','43');
insert into `testdeleterepetition` (`id`, `name`, `hobby`, `job`, `cc`) values('7','aa','fe','12','dv');

表testdeleterepetition2中的数据

insert into `testdeleterepetition2` (`id`, `extend`) values('1','1');
insert into `testdeleterepetition2` (`id`, `extend`) values('2','1');
insert into `testdeleterepetition2` (`id`, `extend`) values('3','1');
insert into `testdeleterepetition2` (`id`, `extend`) values('4','2');
insert into `testdeleterepetition2` (`id`, `extend`) values('5','2');
insert into `testdeleterepetition2` (`id`, `extend`) values('6','2');
insert into `testdeleterepetition2` (`id`, `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,hobby,job) t)
AND b.extend=1;



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值