Dùng GROUP BY kết hợp COUNT(*) và IF() để phân loại trùng/lặp.
Cú pháp
SELECT ten_cot, COUNT(*) AS so_lan,
IF(COUNT(*) > 1, 'Trùng lặp', 'Không trùng') AS trang_thai
FROM ten_bang
GROUP BY ten_cot;
Ví dụ minh họa
Tạo bảng DuplicateRecords:
CREATE TABLE DuplicateRecords (
Id INT NOT NULL AUTO_INCREMENT,
Name VARCHAR(30),
PRIMARY KEY (Id)
);
INSERT INTO DuplicateRecords (Name) VALUES
('Carol'), ('John'), ('Sam'), ('John'), ('Sam'),
('Sam'), ('John'), ('Carol'), ('Carol'), ('Mike');
Truy vấn đếm trùng lặp
SELECT Name, COUNT(*) AS Repetition,
IF(COUNT(*) > 1, 'Trùng lặp', 'Không trùng') AS IsDuplicate
FROM DuplicateRecords
GROUP BY Name;
Kết quả:
+-------+------------+-------------+
| Name | Repetition | IsDuplicate |
+-------+------------+-------------+
| Carol | 3 | Trùng lặp |
| John | 3 | Trùng lặp |
| Sam | 3 | Trùng lặp |
| Mike | 1 | Không trùng |
+-------+------------+-------------+
Mở rộng: Chỉ lấy các giá trị trùng: HAVING COUNT(*) > 1.