Trong bài đăng này, tôi đang chia sẻ các tập lệnh khác nhau để tìm các bản ghi trùng lặp trong MySQL.
Tôi đã tìm thấy một số giải pháp thay thế để tìm các bản ghi trùng lặp trong MySQL.
Theo kích thước dữ liệu của bạn, bạn có thể chọn bất kỳ giải pháp nào trong số giải pháp này.
Trước tiên, hãy tạo dữ liệu trùng lặp mẫu:
1 2 3 4 5 6 7 8 9 10 11 12 13 | CREATE TABLE Employee.tbl_FindDuplicates ( EmpID INTEGER PRIMARY KEY AUTO_INCREMENT ,FirstName VARCHAR(50) ,LastName VARCHAR(50) ); INSERT INTO Employee.tbl_FindDuplicates (FirstName,LastName) VALUES ('Anvesh','Patel'),('Neevan','Patel') ,('Anvesh','Patel'),('Nirav','Shah') ,('Dharma','Teja'),('Nirav','Shah'); |
Giải pháp đầu tiên sử dụng Tự tham gia:
1 2 3 4 5 6 7 8 | SELECT FD1.EmpID ,FD1.FirstName ,FD1.LastName FROM Employee.tbl_FindDuplicates AS FD1 INNER JOIN Employee.tbl_FindDuplicates AS FD2 ON FD1.FirstName = FD2.FirstName WHERE FD1.EmpID <> FD2.EmpID |
Giải pháp thứ hai sử dụng Truy vấn SUB:
1 2 3 4 5 6 7 8 9 10 11 12 | SELECT FD.EmpID ,FD.FirstName ,FD.LastName FROM Employee.tbl_FindDuplicates AS FD INNER JOIN ( SELECT FirstName FROM Employee.tbl_FindDuplicates GROUP BY FirstName HAVING COUNT(1)>1 ) AS IFD ON IFD.FirstName = FD.FirstName |
Giải pháp thứ ba sử dụng Bí danh bảng:
1 2 3 4 5 6 7 8 | SELECT FD1.EmpID ,FD1.FirstName ,FD1.LastName FROM Employee.tbl_FindDuplicates AS FD1 , Employee.tbl_FindDuplicates AS FD2 WHERE FD1.FirstName = FD2.FirstName AND FD1.EmpID <> FD2.EmpID |
Giải pháp thứ tư sử dụng Group BY:
1 2 3 4 5 6 7 | SELECT EmpID ,FirstName ,LastName FROM Employee.tbl_FindDuplicates GROUP BY FirstName,LastName HAVING COUNT(1) >=2; |
Trên đây là tất cả các giải pháp khác nhau để tìm các bản ghi trùng lặp trong MySQL.
Vì bạn có thể chọn bất kỳ giải pháp nào trong số này nhưng đề xuất của tôi là sử dụng giải pháp đầu tiên sẽ hoạt động nhanh hơn.