Trước tiên, bạn có thể thử thêm chỉ mục vào các trường ProgramName và CustID nếu bạn chưa có.
Khử trùng lặp
Bạn có thể nhóm các bản ghi của mình để xác định lỗi giả mạo và khi bạn đang làm điều đó, hãy lấy giá trị ID tối thiểu cho mỗi nhóm. Sau đó, chỉ cần xóa tất cả các bản ghi có ID không phải là một trong những MinID.
Phương pháp trong mệnh đề
delete from
ProgramsList
where
id not in
(select min(id) as MinID
from ProgramsList
group by ProgramName, CustID)
Phương pháp tham gia
Bạn có thể phải chạy điều này nhiều lần, nếu có nhiều thành viên trong mỗi nhóm.
DELETE P
FROM ProgramsList as P
INNER JOIN
(select count(*) as Count, max(id) as MaxID
from ProgramsList
group by ProgramName, CustID) as A on A.MaxID = P.id
WHERE A.Count >= 2
Một số người gặp vấn đề về hiệu suất với Điều khoản trong, một số thì không. Nó phụ thuộc rất nhiều vào các chỉ số của bạn và như vậy. Nếu một cái quá chậm, hãy thử cái kia.
Liên quan: https://stackoverflow.com/a/4192849/127880