Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL में एक को छोड़कर सभी डुप्लिकेट पंक्तियां हटाएं?

<ब्लॉकक्वॉट>

संपादक चेतावनी:यह समाधान कम्प्यूटेशनल रूप से अक्षम है और एक बड़ी तालिका के लिए आपके कनेक्शन को कम कर सकता है।

एनबी - आपको जरूरत इसे पहले परीक्षण प्रति . पर करने के लिए आपकी टेबल का!

जब मैंने इसे किया, तो मैंने पाया कि जब तक मैंने AND n1.id <> n2.id भी शामिल नहीं किया , इसने तालिका की प्रत्येक पंक्ति को हटा दिया।

  1. यदि आप पंक्ति को सबसे कम id के साथ रखना चाहते हैं मूल्य:

    DELETE n1 FROM names n1, names n2 WHERE n1.id > n2.id AND n1.name = n2.name
    
  2. यदि आप पंक्ति को उच्चतम 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;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. चेतावनी:mysql_fetch_array ():आपूर्ति किया गया तर्क मान्य MySQL परिणाम नहीं है

  2. MySQL में दो तालिकाओं से कैसे चयन करें, भले ही एक तालिका की सभी पंक्तियों में दूसरे में संवाददाता न हों?

  3. JDBC MySql कनेक्शन पूलिंग अभ्यास समाप्त कनेक्शन पूल से बचने के लिए

  4. MySQL अनंत पंक्तियों को ऑफ़सेट करता है

  5. MySQL - 0 के साथ पैड ज़िप कोड कैसे सामने रखें?