logo图片
MySql教程
MySql用户管理
MySQL数据库
MySql表格和视图
MySQL查询
MySQL索引
MySQL子句
MySQL授权
MySql控制流
MySQL条件
MySQL连接
MySQL键
MySQL触发器
MySQL聚合函数
MySQL常用
MySQL正则表达式
MySql差异性

MySQL 查找重复记录

MySQL是一个数据库应用程序,它以行和列的形式将数据存储在表中。该数据库应用程序可以在表中存储重复的记录,这可能会影响MySQL中数据库的性能。但是,由于多种原因会发生数据重复,因此在MySQL中使用数据库时,在表中查找重复值是一项重要的任务。
通常,始终在表中使用唯一约束是一个好主意。表来存储防止重复行的数据。但是,有时使用数据库,由于 人为错误,外部来源的未清除数据或应用程序中的 错误,我们会发现许多重复的行。在本文中,我们将学习如何在 MySQL 数据库中找到重复的值。
让我们借助示例了解它。首先,我们将使用以下语句创建一个名为" student_contacts "的表:
CREATE TABLE student_contacts (
    id int PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT null,
    state VARCHAR(50) NOT null,
    email VARCHAR(255) NOT null
);
接下来,我们将使用 INSERT 语句将记录填充到表中如下:
INSERT INTO student_contacts (name, state, email) 
VALUES ('Carine', 'Texas', 'carine@lidihuo.com'),
('Carine', 'Texas', 'carine@lidihuo.com'),
('Peter', 'New York', 'peter@lidihuo.com'),
('Janine ', 'Florida', 'janine@lidihuo.com'),
('Janine ', 'Florida', 'janine@lidihuo.com'),
('Jonas ', 'Atlanta', 'jonas@lidihuo.com'),
('Jean', 'California', 'jean@lidihuo.com'),
('Jean', 'California', 'jean@lidihuo.com'),
('Mark ', 'Florida', 'mark@lidihuo.com'),
('Roland', 'Alabama', 'roland@lidihuo.com'),
('Roland', 'Alabama', 'roland@lidihuo.com'),
('Julie', 'Texas', 'julie@lidihuo.com'),
('Shane', 'New York', 'shane@lidihuo.com'),
('Susan', 'Arizona', 'susan@lidihuo.com'),
('Susan', 'Arizona', 'susan@lidihuo.com');
执行 SELECT 语句以验证记录:
MySQL查找重复记录
在此表中,我们可以看到存在具有重复值的各种行。让我们学习如何使用 SQL 查询找到它们。

查找重复项单列中的数据

我们可以使用以下步骤在表中找到重复的条目:
首先,我们将使用 GROUP BY 子句根据所需的列对所有行进行分组。所需的列是我们将根据其检查重复记录的列。 第二,我们将使用 HAVING 子句中的 COUNT()函数来检查具有多个元素的组。
以下语法说明了上述步骤:
SELECT column, COUNT(column)
FROM table_name
GROUP BY column
HAVING COUNT(column) > 1;
借助上述语法,我们可以使用以下语句在student_contacts表中查找名称重复的行:
SELECT name, email, COUNT(name)
FROM student_contacts
GROUP BY name
HAVING COUNT(name) > 1;
执行上述语句后,我们将获得以下显示重复名称和电子邮件的输出:
MySQL查找重复记录

在多个列中查找重复数据

有时我们需要根据多个列查找重复值。在这种情况下,我们可以使用以下语法:
SELECT 
    column1, COUNT(column1),
    column2, COUNT(column2),……
FROM table_name
GROUP BY column1, column2, .......
HAVING 
       (COUNT(column1) > 1) AND 
       (COUNT(column2) > 1) AND …....
我们应注意,在多列中查找重复项时,仅当列的组合重复时,行才会重复。因此,我们需要在 HAVING 子句 AND 运算符>。
例如,如果我们要在student_contacts表中查找包含 名称,州,电子邮件列中重复值的行,则可以使用以下查询:
SELECT 
    name, COUNT(name),
    state, COUNT(state),
    email, COUNT(email)
FROM student_contacts
GROUP BY name, state, email
HAVING  COUNT(name) > 1
    AND COUNT(state) > 1
    AND COUNT(email) > 1;
执行上述语句后,我们将获得以下输出,其中显示重复的名称,状态和电子邮件列:
MySQL查找重复记录
昵称: 邮箱:
Copyright © 2020 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4