mysql 删除表中的某列的重复字段


假设:

create table t(
id int not null primary key auto_increment,
name char(10) not null,
sex char(2) not null
)engine=myisam;


insert into t values
(null,'tom',''),
(null,'jack',''),
(null,'小文',''),
(null,'小文',''),
(null,'tom',''),
(null,'小张',''),
(null,'小赵',''),
(null,'tom',''),
(null,'jack',''),
(null,'小赵','');

 

 

删除重复字段SQL代码

delete t as a
from t as a,
(select * from t group by name having count(1)>1) as b
where a.name=b.name
and a.id > b.id;

 

详细解释

1、首先把所有重复的第一个字段取出

select * from t group by name having count(1)>1

2、再与原表组成对照表

select * from t as a,
(select * from t group by name having count(1)>1) as b
where a.name=b.name;

3、取出重复第一个字段的id号以外的所有字段

select * from t as a,
(select * from t group by name having count(1)>1) as b
where a.name=b.name
and a.id > b.id;

4、进行删除

delete t as a
from t as a,
(select * from t group by name having count(1)>1) as b
where a.name=b.name
and a.id > b.id;

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM