假设:
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;
时间: 2024-11-05 22:42:51