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