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

Tìm hàng trùng lặp chính xác trên một hoặc nhiều cột MySQL

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.