Computer >> Máy Tính >  >> Lập trình >> MySQL

MySQL chỉ chọn các bản ghi trùng lặp từ cơ sở dữ liệu và hiển thị cả số lượng?

Để chỉ chọn các bản ghi trùng lặp từ cơ sở dữ liệu và hiển thị số lượng, hãy sử dụng HAVING cùng với hàm tổng hợp count (). Đầu tiên chúng ta hãy tạo một bảng -

mysql> create table duplicateRecords
   -> (
   -> ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   -> ClientName varchar(20)
   -> );
Query OK, 0 rows affected (0.49 sec)

Sau đây là truy vấn để chèn các bản ghi trong bảng bằng cách sử dụng lệnh insert -

mysql> insert into duplicateRecords(ClientName) values('John');
Query OK, 1 row affected (0.16 sec)
mysql> insert into duplicateRecords(ClientName) values('Carol');
Query OK, 1 row affected (0.17 sec)
mysql> insert into duplicateRecords(ClientName) values('John');
Query OK, 1 row affected (0.29 sec)
mysql> insert into duplicateRecords(ClientName) values('Sam');
Query OK, 1 row affected (0.19 sec)
mysql> insert into duplicateRecords(ClientName) values('Sam');
Query OK, 1 row affected (0.11 sec)
mysql> insert into duplicateRecords(ClientName) values('Bob');
Query OK, 1 row affected (0.12 sec)
mysql> insert into duplicateRecords(ClientName) values('John');
Query OK, 1 row affected (0.13 sec)
mysql> insert into duplicateRecords(ClientName) values('Sam');
Query OK, 1 row affected (0.12 sec)

Sau đây là truy vấn để hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select -

mysql> select * from duplicateRecords;

Điều này sẽ tạo ra kết quả sau -

+----------+------------+
| ClientId | ClientName |
+----------+------------+
| 1        | John       |
| 2        | Carol      |
| 3        | John       |
| 4        | Sam        |
| 5        | Sam        |
| 6        | Bob        |
| 7        | John       |
| 8        | Sam        |
+----------+------------+
8 rows in set (0.00 sec)

Sau đây là truy vấn:chỉ chọn các bản ghi trùng lặp từ cơ sở dữ liệu -

mysql> select ClientName,count(*) as DuplicateRecord
   -> from duplicateRecords
   -> group by ClientName
   -> having DuplicateRecord > 1;

Điều này sẽ tạo ra kết quả sau -

+------------+-----------------+
| ClientName | DuplicateRecord |
+------------+-----------------+
| John       | 3               |
| Sam        | 3               |
+------------+-----------------+
2 rows in set (0.00 sec)