संपादक चेतावनी:यह समाधान कम्प्यूटेशनल रूप से अक्षम है और एक बड़ी तालिका के लिए आपके कनेक्शन को कम कर सकता है।
एनबी - आपको जरूरत इसे पहले परीक्षण प्रति . पर करने के लिए आपकी टेबल का!
जब मैंने इसे किया, तो मैंने पाया कि जब तक मैंने AND n1.id <> n2.id भी शामिल नहीं किया , इसने तालिका की प्रत्येक पंक्ति को हटा दिया।
-
यदि आप पंक्ति को सबसे कम
idके साथ रखना चाहते हैं मूल्य:DELETE n1 FROM names n1, names n2 WHERE n1.id > n2.id AND n1.name = n2.name -
यदि आप पंक्ति को उच्चतम
idके साथ रखना चाहते हैं मूल्य:DELETE n1 FROM names n1, names n2 WHERE n1.id < n2.id AND n1.name = n2.name
मैंने इस विधि का उपयोग MySQL 5.1 में किया है
अन्य संस्करणों के बारे में निश्चित नहीं है।
अपडेट करें:चूंकि डुप्लीकेट निकालने के लिए लोग Googling यहां समाप्त होते हैं
हालांकि ओपी का सवाल DELETE के बारे में है , कृपया सलाह दी जाए कि INSERT . का उपयोग करके और DISTINCT बहुत तेज है। 8 मिलियन पंक्तियों वाले डेटाबेस के लिए, नीचे दी गई क्वेरी में DELETE . का उपयोग करते समय 13 मिनट का समय लगा , इसमें 2 घंटे से अधिक का समय लगा और फिर भी पूरा नहीं हुआ।
INSERT INTO tempTableName(cellId,attributeId,entityRowId,value)
SELECT DISTINCT cellId,attributeId,entityRowId,value
FROM tableName;