计算 MySQL 表中的重复记录?

mysqlmysqli database更新于 2025/4/22 22:04:17

您可以使用 MySQL 中的 if() 来计算重复记录。语法如下 −

SELECT yourColumnName, COUNT(*) AS anyVariableName, IF (
   COUNT(*)>1,"Duplicate Records", "Not Duplicate records") as anyVariableName FROM yourTableName group by yourColumnName;

为了理解上述语法,让我们创建一个表。创建表的查询如下 −

mysql> create table DuplicateRecords
   -> (
   -> Id int NOT NULL AUTO_INCREMENT,
   -> Name varchar(30),
   -> PRIMARY KEY(Id)
   -> );
Query OK, 0 rows affected (0.82 sec)

使用 insert 命令在表中插入一些记录。 查询语句如下 −

mysql> insert into DuplicateRecords(Name) values('Carol');
Query OK, 1 row affected (0.81 sec)

mysql> insert into DuplicateRecords(Name) values('John');
Query OK, 1 row affected (0.17 sec)

mysql> insert into DuplicateRecords(Name) values('Sam');
Query OK, 1 row affected (0.19 sec)

mysql> insert into DuplicateRecords(Name) values('John');
Query OK, 1 row affected (0.17 sec)

mysql> insert into DuplicateRecords(Name) values('Sam');
Query OK, 1 row affected (0.11 sec)

mysql> insert into DuplicateRecords(Name) values('Sam');
Query OK, 1 row affected (0.20 sec)

mysql> insert into DuplicateRecords(Name) values('John');
Query OK, 1 row affected (0.12 sec)

mysql> insert into DuplicateRecords(Name) values('Carol');
Query OK, 1 row affected (0.14 sec)

mysql> insert into DuplicateRecords(Name) values('Carol');
Query OK, 1 row affected (0.10 sec)

mysql> insert into DuplicateRecords(Name) values('Mike');
Query OK, 1 row affected (0.14 sec)

使用 select 语句显示表中的所有记录。查询如下 −

mysql> select *from DuplicateRecords;

以下是输出 −

+----+-------+
| Id | Name  |
+----+-------+
| 1 | Carol  |
| 2 | John   |
| 3 | Sam    |
| 4 | John   |
| 5 | Sam    |
| 6 | Sam    |
| 7 | John   |
| 8 | Carol  |
| 9 | Carol  |
| 10 | Mike  |
+----+-------+
10 rows in set (0.00 sec)

以下查询用于统计表中的重复记录 −

mysql> SELECT Name, COUNT(*) AS Repetition, IF (COUNT(*)>1,"Duplicate Records", "Not Duplicate records") as IsDuplicateRecordsOrNot
   -> from DuplicateRecords group by Name;

以下是输出 −

+-------+------------+-------------------------+
| Name  | Repetition | IsDuplicateRecordsOrNot |
+-------+------------+-------------------------+
| Carol |          3 | Duplicate Records       |
| John  |          3 | Duplicate Records       |
| Sam   |          3 | Duplicate Records       |
| Mike  |          1 | Not Duplicate records   |
+-------+------------+-------------------------+
4 rows in set (0.00 sec)

相关文章


有用资源