我们主要从以下几个方面来对数据库当中重复数据的处理:
MySQL保证数据唯一性
在数据库当中,有些数据我们是允许其能够重复存在,但是有时候我们也需要删除这些重复的数据。若是要防止数据重复存在,可以通过以下几种方式来设置:
- 将字段修饰为private key或unique
- 如果是要设置两个字段的数据不重复可以通过设置双主键的模式来确保两个字段的唯一性
create table student(id int,firstName varchar(20),lastName varchar(20),private key(firstName,lastName))
- 给字段设置唯一索引,这样重复的数据在插入的时候就无法执行
- 使用insert ignore into插入数据:当数据库当中没有数据,就插入新的数据,如果已经有数据则跳过这条数据,不会出错也不会插入新纪录
- replace into,如果存在primary或Unique相同的纪录,则先删除再插入
统计重复数据
- 使用group by
select count(*) as repetitions,firstName,lastName from person group by firstName,lastName having repetitions > 1;
过滤掉重复的数据
- 查询的时候使用关键字distinct
mysql> select distinct firstName,lastName from person;
- 查询的时候使用group by
select firstName,lastName from person group by firstName,lastName;
删除重复的数据
给相应的字段设置主键或唯一的索引
alter ignore table person add primary key(firstName,lastName)
网友评论