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

एक MySQL डेटाबेस में डुप्लिकेट पंक्तियों को हटाना

मैं इसे निम्न तरीके से करूँगा:

  1. अपनी मौजूदा तालिका से एक अस्थायी तालिका बनाएं:

    CREATE TEMPORARY TABLE data_to_keep LIKE table_with_dupes_in_it
    
  2. केवल अपने इच्छित रिकॉर्ड के साथ अस्थायी तालिका को पॉप्युलेट करें:

    INSERT INTO data_to_keep
    SELECT DISTINCT * FROM table_with_dupes_in_it
    
  3. टेबल खाली करें

    TRUNCATE TABLE table_with_dupes_in_it
    
  4. डेटा को अस्थायी तालिका से मूल तालिका में लौटाएं

    INSERT INTO table_with_dupes_in_it
    SELECT * FROM data_to_keep;
    
  5. साफ़ करें

    DROP TEMPORARY TABLE data_to_keep
    

सलाह दी जाती है कि यदि प्रश्न में तालिका एक बड़ी है तो यह बड़ी मात्रा में स्मृति और/या भंडारण खा सकता है। यदि यह एक बड़ी तालिका है तो मैं एक अस्थायी तालिका के बजाय एक वास्तविक तालिका का उपयोग करने के इच्छुक हूं ताकि आपके डीबी सर्वर पर अत्यधिक मात्रा में स्मृति न खाएं।

जोड़ने के लिए संपादित करें:

यदि आप केवल आंशिक नकल के बारे में चिंतित हैं (पंक्तियाँ जहाँ केवल कुछ डेटा पहले दर्ज किए गए डेटा के समान है) तो आप GROUP BY का उपयोग करना चाहेंगे। जब आप GROUP BY का उपयोग करते हैं, तो आप MySQL को केवल एक पंक्ति वापस करने के लिए सीमित कर सकते हैं जिसमें उन सभी के बजाय दिए गए डेटा शामिल हैं।

SELECT *
FROM table
GROUP BY column_name

आपको उन स्तंभों पर UNIQUE अनुक्रमणिका का उपयोग करने पर भी विचार करना चाहिए जिन्हें आप डुप्लिकेट डेटा नहीं रखना चाहते हैं, यह उपयोगकर्ताओं को पहले स्थान पर डुप्लिकेट डेटा डालने से रोकेगा।



  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. जब तक मैं मैन्युअल रूप से ANALYZE TABLE `myTable` नहीं चलाता, MySQL info_schema को अपडेट नहीं कर रहा है

  4. लिनक्स में कमांड लाइन से MySQL डेटाबेस का बैकअप कैसे लें

  5. ईमेल प्राप्त होने पर स्क्रिप्ट चलाने का सबसे आसान तरीका क्या है?