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

MySQL तालिका से डुप्लिकेट मानों को हटाने का सबसे अच्छा तरीका क्या है?

सबसे पहले, आप प्रोग्रामनाम और कस्टआईडी फ़ील्ड में अनुक्रमणिका जोड़ने का प्रयास कर सकते हैं यदि आपके पास पहले से नहीं है।

डी-डुपिंग

आप ठगों की पहचान करने के लिए अपने रिकॉर्ड को समूहबद्ध कर सकते हैं, और जैसा कि आप ऐसा कर रहे हैं, प्रत्येक समूह के लिए न्यूनतम आईडी मान प्राप्त करें। फिर, बस उन सभी रिकॉर्ड्स को हटा दें जिनकी आईडी मिनीआईडी ​​में से एक नहीं है।

इन-क्लॉज विधि

delete from
 ProgramsList
where
 id not in 
    (select min(id) as MinID
      from ProgramsList
      group by ProgramName, CustID) 

जुड़ने की विधि

यदि प्रति समूह कई सदस्य हैं, तो आपको इसे एक से अधिक बार चलाना पड़ सकता है।

DELETE P
FROM ProgramsList as P
INNER JOIN 
    (select count(*) as Count, max(id) as MaxID
     from ProgramsList
     group by ProgramName, CustID) as A on A.MaxID = P.id
WHERE A.Count >= 2

कुछ लोगों के पास इन-क्लॉज के साथ प्रदर्शन संबंधी समस्याएं हैं, कुछ के पास नहीं है। यह आपके इंडेक्स और ऐसे पर बहुत निर्भर करता है। यदि एक बहुत धीमा है, तो दूसरे का प्रयास करें।

संबंधित:https://stackoverflow.com/a/4192849/127880



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक तालिका से दूसरी तालिका में मान सम्मिलित करना

  2. MySQL - चुनें कि फ़ील्ड कहां है (सबक्वायरी) - बेहद धीमा क्यों?

  3. mysql हटाएँ, autoincrement

  4. MySQL में तालिका टिप्पणी की लंबाई

  5. MySQL टेक्स्ट मेमोरी आवंटन