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