MySQL 查找重复记录

2025年3月17日 | 阅读 3 分钟

MySQL 是一个数据库应用程序,以行和列的形式在表中存储数据。此数据库应用程序可以在表中存储重复记录,这会影响 MySQL 数据库的性能。但是,数据重复是由于各种原因造成的,在 MySQL 数据库中工作时,查找表中的重复值是一项重要任务。

通常,为表使用唯一约束以存储防止重复行的有价值的数据是一个好主意。但是,有时在处理数据库时,由于人为错误、外部源未清理的数据应用程序中的错误,我们可能会发现许多重复的行。在本文中,我们将学习如何在 MySQL 数据库中查找重复值。

让我们通过一个例子来理解这一点。首先,我们将使用以下语句创建一个名为“student_contacts”的表

接下来,我们将使用INSERT 语句将记录填入表中,如下所示

执行SELECT 语句以验证记录

MySQL Find Duplicate Records

在此表中,我们可以看到有各种带有重复值的行。让我们学习如何使用SQL查询来查找它们。

查找单个列中的重复数据

我们可以使用以下步骤查找表中的重复条目

  1. 首先,我们将使用 GROUP BY 子句根据所需列对所有行进行分组。所需列是我们将在其上检查重复记录的列。
  2. 其次,我们将在 HAVING 子句中使用 COUNT() 函数,该函数检查具有一个以上元素的组。

以下语法解释了上述步骤

借助上述语法,我们可以使用以下语句在 student_contacts 表中查找具有重复名称的行

执行上述语句后,我们将获得以下输出,其中显示了重复的名称和电子邮件

MySQL Find Duplicate Records

查找多个列中的重复数据

有时我们需要根据多个列查找重复值。在这种情况下,我们可以使用以下语法

我们应该注意,在多个列中查找重复项时,仅当列的组合重复时,行才重复。因此,我们需要在HAVING 子句中使用 AND 运算符。

例如,如果我们想在 student_contacts 表中查找包含name、stateemail 列重复值的行,则可以使用以下查询

执行上述语句后,我们将获得以下输出,其中显示了重复的 name、state 和 emails 列

MySQL Find Duplicate Records