假設:
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;