संपादक चेतावनी:यह समाधान कम्प्यूटेशनल रूप से अक्षम है और एक बड़ी तालिका के लिए आपके कनेक्शन को कम कर सकता है।
एनबी - आपको जरूरत इसे पहले परीक्षण प्रति . पर करने के लिए आपकी टेबल का!
जब मैंने इसे किया, तो मैंने पाया कि जब तक मैंने 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;