Để đếm số lượng bản ghi trùng lặp cho mỗi giá trị trong một cột, bạn dùng GROUP BY kết hợp HAVING COUNT(*) > 1.
Ví dụ minh họa
Tạo bảng:
mysql> create table DemoTable(
Data int
);
Chèn dữ liệu có trùng lặp:
mysql> insert into DemoTable values(60); mysql> insert into DemoTable values(40); mysql> insert into DemoTable values(50); mysql> insert into DemoTable values(60); mysql> insert into DemoTable values(40); mysql> insert into DemoTable values(80);
Hiển thị dữ liệu:
mysql> select * from DemoTable;
Kết quả:
+------+ | Data | +------+ | 60 | | 40 | | 50 | | 60 | | 40 | | 80 | +------+
Truy vấn đếm số lượng trùng lặp
mysql> select count(*) from DemoTable group by Data having count(Data) > 1;
Kết quả:
+----------+ | count(*) | +----------+ | 2 | | 2 | +----------+
Giải thích:
GROUP BY Data: Nhóm các hàng theo giá trị DataCOUNT(*): Đếm số hàng trong mỗi nhómHAVING COUNT(Data) > 1: Chỉ giữ nhóm có số lượng > 1 (tức là trùng lặp)- Kết quả: 60 xuất hiện 2 lần, 40 xuất hiện 2 lần → 2 hàng kết quả đều có count = 2
Mở rộng: Nên dùng SELECT Data, COUNT(*) as cnt FROM DemoTable GROUP BY Data HAVING cnt > 1 để biết giá trị nào bị trùng và trùng bao nhiêu lần.