MySQL语句实现去重复数据(mysql去重)

MySQL语句实现去重复数据

在使用MySQL时,经常会遇到去掉表中重复数据的需求,比如某张表出现了重复的id或者电话号码,本文介绍MySQL提供的几种语句来实现去重的目的。

(1) INSERT IGNORE

首先介绍的是INSERT IGNORE语句,这一种语句在插入数据时检查数据是否重复,如果键值已经存在,则会直接忽略。例如,有一张名为user的表,想要插入一条新的用户数据,但是只要其中的电话号码已经存在就不会插入:

INSERT IGNORE INTO user(name,phone) VALUES('Tom', '13800138000');

(2) GROUP BY

另一种方法是使用GROUP BY语句,该语句用于把结果集中的数据按照某个字段来分组,然后根据具体业务逻辑来取出重复数据。比如把user表中name字段重复的行取出:

SELECT * FROM user GROUP BY name HAVING count(*) > 1;

(3) DISTINCT

使用distinct关键字也是进行去重的常用方法,该语句用于查询某一列的不重复的值,可以用来获取所有唯一的值:

SELECT DISTINCT name FROM user; 

(4) EXISTS

最后一种方法使用exists语句,exists语句用于判断表中是否存在满足某条件的行,比如下面这条语句查询出所有user表中没有重复的电话号码:

SELECT  * 
FROM user u
WHERE NOT EXISTS (SELECT * FROM user where phone = u.phone AND id u.id);

总结

以上就是用MySQL实现去重复数据的几种方法,唯一要注意的是,为了保证去重准确性,需要保证查询时所有字段的值都相同才能确定属于同一行,因此如果某行的键值有几个字段组成,要对应的查询时也要使用几个字段来查询。


数据运维技术 » MySQL语句实现去重复数据(mysql去重)