sql 删除相同记录

原创
2017/07/20 09:56
阅读数 8

表结构及数据:

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;

 

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部