Maison > Questions et réponses > le corps du texte
Exigence : supprimez les éléments avec le même identifiant principal et le même nom de médicament dans DRUG, et conservez la plus petite ligne de drug_seq
Question : Mysql utilise ces méthodes pour supprimer les doublons, pourquoi ne peut-il supprimer que des centaines ou des dizaines de données en double à chaque fois, comme en les pressant du dentifrice ? Pareil, à chaque fois que je l'exécute, je supprime un peu plus de duplication, et il y a évidemment des centaines de milliers de données en double, mais elles sont toujours incomplètes. SUPPRIMER DE `drug2022` OÙ drug_seq IN (
SELECT drug_seq FROM (
SELECT drug_seq FROM `drug2022` OÙ (primaryid,drugname) IN (SELECT Primaryid,drugname FROM `drug2022` GROUP BY Primaryid,drugname HAVING COUNT(*) > ; 1)
ET
drug_seq NOT IN (SELECT MIN(drug_seq) FROM `drug2022` GROUP BY Primaryid,drugname HAVING COUNT(*) > 1))AS a1);
#Méthode 2 :
DELETE
FROM `drug2022`
WHERE drug_seq NOT IN (
) (SELECT t1.min_drug_seq
) FROM (SELECT MIN(drug_seq) AS min_drug_seq FROM `drug2022` GROUP BY drugname, Primaryid HAVING COUNT(1 ) > 1) t1))
AND (nom du médicament, identifiant primaire) IN
(SELECT t2.nom du médicament, t2.identifiant primaire
) FROM (SELECT nom du médicament, identifiant primaire FROM `drug2022` GROUP BY nom du médicament, identifiant primaire HAVING COUNT(1) > 1) t2) ; t2. drugname
AND t1.drug_seq < t2. drug_seq;
#Method 4
DELETE
FROM `drug2022`
WHERE drug_seq NOT IN (SELECT * FROM (SELECT MIN(drug_seq) FROM GROUPE `drogue2022` PAR primaire, nom du médicament) t2);