Sử dụng subquery với GROUP BY ... HAVING COUNT(*) > 1 để tìm tổ hợp giá trị xuất hiện nhiều lần, sau đó IN để lấy toàn bộ hàng gốc.
Ví dụ minh họa
Tạo bảng và chèn dữ liệu (Chris-74 trùng 2 lần):
mysql> CREATE TABLE DemoTable1861 (Id INT AUTO_INCREMENT PRIMARY KEY, Name VARCHAR(20), Marks INT);
mysql> INSERT INTO DemoTable1861(Name,Marks) VALUES('John',45),('Chris',74),('David',89),('Chris',74),('John',49);
Tìm hàng trùng lặp cặp (Name, Marks):
mysql> SELECT Id, Name, Marks FROM DemoTable1861
WHERE (Name, Marks) IN (
SELECT Name, Marks FROM DemoTable1861
GROUP BY Name, Marks HAVING COUNT(*) > 1
);
Kết quả:
+----+-------+-------+ | Id | Name | Marks | +----+-------+-------+ | 2 | Chris | 74 | | 4 | Chris | 74 | +----+-------+-------+
Hiệu suất: Trên bảng lớn, hãy thêm index trên (Name, Marks) và cân nhắc JOIN thay IN.