Computer >> Computer tutorials >  >> Programming >> MySQL

Count duplicates records in MySQL table?


You can use if() from MySQL to count duplicate records. The syntax is as follows −

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

To understand the above syntax, let us create a table. The query to create a table is as follows −

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 some records in the table using insert command. The query is as follows −

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)

Display all records from the table using select statement. The query is as follows −

mysql> select *from DuplicateRecords;

The following is the output −

+----+-------+
| 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)

Here is the query to count the duplicate records from the table −

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

The following is the output −

+-------+------------+-------------------------+
| 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)