検索

ホームページ  >  に質問  >  本文

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) ,薬剤名) IN (SELECT プライマリ ID,薬剤名 FROM `drug2022` GROUP BY プライマリ ID,薬剤名 HAVING COUNT(*) > 1)

AND

薬剤_seq NOT IN (SELECT MIN(drug_seq) FROM `drug2022` GROUP BY Primaryid,drugname HAVING COUNT (*) > 1))AS a1);

##方法 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薬剤名、プライマリ ID HAVING COUNT(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

AND t1.drugname = t2。薬剤名

AND t1.drug_seq < t2.drug_seq;

#メソッド 4

DELETE

FROM `drug2022`

WHERE Drug_seq NOT IN (SELECT * FROM (SELECT MIN(drug_seq) FROM `drug2022` GROUP BY プライマリ ID, 薬物名) t2);

P粉029305743P粉029305743821日前818

全員に返信(0)返信します

応答なし
  • キャンセル返事