表结构及数据:
drop table if exists skye_test;
create table skye_test(
user_id int primary key auto_increment,
user_name varchar(20) not null,
age int unsigned,
gender int(1),
mark_code long not null
);
insert into skye_test values
(1,'userA',12,0,2147483650),
(2,'userB',13,1,2147483651),
(3,'userC',13,1,2147483652),
(4,'userD',14,1,2147483653),
(5,'userE',15,0,2147483654),
(6,'userF',16,0,2147483655),
(7,'userB',13,1,2147483651),
(8,'userG',17,0,2147483656),
(9,'userB',13,1,2147483651);
数据如图:
可以看到 user_id=2 , user_id=7 , user_id=9 的记录是除了 user_id 不同外其他内容是相同的,本文的目标是只留下其中一条。
user_id 是主键,唯一,所以它是入手的关键
delete from skye_test
where user_id not in
(
select minid from
(select min(user_id) as minid from skye_test group by user_name,age,gender,mark_code) t
);
假如没有 主键 user_id
/*删除列 user_id */
alter table skye_test drop user_id;