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@learnfk.com'),
('Carine', 'Texas', 'carine@learnfk.com'),
('Peter', 'New York', 'peter@learnfk.com'),
('Janine ', 'Florida', 'janine@learnfk.com'),
('Janine ', 'Florida', 'janine@learnfk.com'),
('Jonas ', 'Atlanta', 'jonas@learnfk.com'),
('Jean', 'California', 'jean@learnfk.com'),
('Jean', 'California', 'jean@learnfk.com'),
('Mark ', 'Florida', 'mark@learnfk.com'),
('Roland', 'Alabama', 'roland@learnfk.com'),
('Roland', 'Alabama', 'roland@learnfk.com'),
('Julie', 'Texas', 'julie@learnfk.com'),
('Shane', 'New York', 'shane@learnfk.com'),
('Susan', 'Arizona', 'susan@learnfk.com'),
('Susan', 'Arizona', 'susan@learnfk.com');

执行 SELECT 语句以验证记录:

MySQL Find Duplicate Records

在此表中,无涯教程可以看到存在具有重复值的各种行。

在单列中查找重复数据

无涯教程可以使用以下步骤在表中找到重复的条目:

链接:https://www.learnfk.comhttps://www.learnfk.com/mysql/mysql-find-duplicate-records.html

来源:LearnFk无涯教程网

  1. 首先,将使用 GROUP BY 子句根据所需的列对所有行进行分组。所需的列是将根据其检查重复记录的列。
  2. 第二,将使用 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 Find Duplicate Records

在多列中查找重复数据

有时无涯教程需要根据多个列查找重复的值。在这种情况下,可以使用如下语法:

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表中查找在name,state,email列中包含重复值的行,则可以使用以下查询:

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 Find Duplicate Records

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

Vue开发实战 -〔唐金州〕

许式伟的架构课 -〔许式伟〕

安全攻防技能30讲 -〔何为舟〕

WebAssembly入门课 -〔于航〕

代码之丑 -〔郑晔〕

手把手带你写一个Web框架 -〔叶剑峰〕

朱涛 · Kotlin编程第一课 -〔朱涛〕

现代React Web开发实战 -〔宋一玮〕

后端工程师的高阶面经 -〔邓明〕

好记忆不如烂笔头。留下您的足迹吧 :)