요구 사항: DRUG에서 동일한 기본 ID와 약물 이름을 가진 항목을 삭제하고 drug_seq의 가장 작은 행을 유지하세요
질문: Mysql은 이러한 방법을 사용하여 중복을 제거하는데 왜 압착처럼 매번 수백 또는 수십 개의 중복 데이터만 제거할 수 있습니까? 치약? 똑같이 실행할 때마다 중복 데이터가 조금씩 제거됩니다. 분명히 수십만 개의 중복 데이터가 있습니다. 여러 가지 방법을 시도했지만 여전히 중복이 완료되지 않았습니다.
#방법 1:
DELETE FROM `drug2022` WHERE drug_seq IN (
SELECT drug_seq FROM (
SELECT drug_seq FROM `drug2022` WHERE (primaryid,drugname) IN (SELECT Primaryid,drugname FROM `drug2022` GROUP BY Primaryid,drugname HAVING COUNT(* ) > 1)
AND
drug_seq NOT IN (SELECT MIN(drug_seq) FROM `drug2022` GROUP BY Primaryid,drugname HAVING COUNT(*) > 1))AS a1);
#방법 2:
DELETE
FROM `drug2022`
drug_seq NOT IN (
) (SELECT t1.min_drug_seq
) FROM (SELECT MIN(drug_seq) AS min_drug_seq FROM`drug2022` GROUP BY drugname, 개수가 많음(1) > 1) t1))
AND (약물 이름 , 기본 ID) IN
(SELECT t2.drugname, t2.primaryid
) FROM (SELECT 약물 이름, 기본 ID FROM `drug2022` GROUP BY 약물 이름, 기본 ID HAVING COUNT(1) > 1) t2);
#방법 3:
DELETE t1
FROM `drug2022` t1,
`drug2022` t2
WHERE t1.primaryid = t2.primaryid
그리고 t1.약물 이름 = t2.drugname
AND t1.drug_seq < t2.drug_seq;
#방법 4
DELETE
FROM`drug2022`
WHERE drug_seq NOT IN (SELECT * FROM (SELECT MIN(drug_seq) '마약2022'에서 ` GROUP BY 기본 ID, 약물 이름) t2);