1. 程式人生 > >mysql 去除重復數據

mysql 去除重復數據

drop arch arc 復數 rem lov eat insert 2.3

1. 問題描述

有時load或者insert操作導致 表數據有重復

2. 解決方案

通過臨時表、主鍵id、倒騰去重

示例

2.1 create table student(

  name varchar(30) not null default ‘‘,

age smallint(3) not null default 0,

  love varchar(50) not null default ‘‘

)

插入一些數據......(包含重復)

insert into student(name,age,love) values(‘zhangsan‘,15,‘basketball‘);

insert into student(name,age,love) values(‘zhangsan‘,15,‘basketball‘);

insert into student(name,age,love) values(‘zhangsan‘,15,‘basketball‘);

2.2 備份(全部數據或部分數據)

create table student_backup like student;

insert into student_backup select * from student where name=‘zhangsan‘;

2.3 創建臨時表一
create table student_tmp like student;

insert into student_tmp select * from student where name=‘zhangsan‘;

alter table student_tmp add id int primary key auto_increment not null ;

2.4 創建臨時表二

create table tmp2 (

id int auto_increment not null,

primary key(id)

);

insert into tmp2 select min(id) as id from student_tmp group by name,age,love;

2.5 創建臨時表三

create table tmp3 like student_tmp;

insert into tmp3 select student_tmp.* from student_tmp,tmp2 where student_tmp.id=tmp2.id;

alter table tmp3 drop column id;

2.6 刪除重復數據

delete from student where name=‘zhangsan‘;

2.7 插入去重後數據

insert into student select * from tmp3;

Done!

mysql 去除重復數據