Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Hiển thị số lượng bản ghi trùng lặp cùng hàng với GROUP_CONCAT trong MySQL

Giới thiệu

Kết hợp GROUP_CONCAT(), COUNT() và GROUP BY để liệt kê ID và đếm số lần xuất hiện của mỗi giá trị riêng biệt.

1. Tạo bảng và dữ liệu

mysql> create table DemoTable (
    -> CompanyId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> CompanyName varchar(20)
    -> ); 
Query OK, 0 rows affected (0.62 sec)

mysql> insert into DemoTable(CompanyName) values('Amazon'); 
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(CompanyName) values('Google'); 
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable(CompanyName) values('Google'); 
Query OK, 1 row affected (0.07 sec)
mysql> insert into DemoTable(CompanyName) values('Microsoft'); 
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable(CompanyName) values('Amazon'); 
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(CompanyName) values('Amazon'); 
Query OK, 1 row affected (0.07 sec)

2. Dữ liệu gốc

mysql> select *from DemoTable;
+-----------+-------------+
| CompanyId | CompanyName |
+-----------+-------------+
|         1 | Amazon      |
|         2 | Google      |
|         3 | Google      |
|         4 | Microsoft   |
|         5 | Amazon      |
|         6 | Amazon      |
+-----------+-------------+
6 rows in set (0.00 sec)

3. Truy vấn thống kê

mysql> select CompanyName,
    -> group_concat(CompanyId),
    -> count(CompanyId) as count
    -> from DemoTable
    -> group by CompanyName
    -> having count > 1;

4. Kết quả

+-------------+-------------------------+-------+
| CompanyName | group_concat(CompanyId) | count |
+-------------+-------------------------+-------+
| Amazon      | 1,5,6                   |     3 |
| Google      | 2,3                     |     2 |
+-------------+-------------------------+-------+
2 rows in set (0.00 sec)

Giải thích:

  • GROUP_CONCAT(CompanyId): Nối các ID thành chuỗi, phân cách bằng dấu phẩy (mặc định)
  • HAVING count > 1: Chỉ hiển thị các giá trị xuất hiện từ 2 lần trở lên
  • Có thể tùy chỉnh separator: GROUP_CONCAT(CompanyId SEPARATOR ';')

Ứng dụng: Phát hiện trùng lặp, audit dữ liệu, báo cáo tần suất.