찾다

 >  Q&A  >  본문

MySQL 중복 제거, 분명히 수십만 개의 중복 데이터가 있는데 왜 매번 수백 또는 수십 개의 중복 데이터만 제거할 수 있습니까?

요구 사항: 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);

P粉029305743P粉029305743821일 전819

모든 응답(0)나는 대답할 것이다

답장 없음
  • 취소회신하다