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

तालिका में डुप्लिकेट कैसे निकालें?

यह डुप्लिकेट में से एक को बनाए रखेगा:

delete from join_table
where ctid not in (select min(ctid)
                   from join_table
                   group by id1, id2);

आपकी तालिका में एक विशिष्ट पहचानकर्ता नहीं है जिसका उपयोग "एक उत्तरजीवी को चुनने" के लिए किया जा सकता है। यहीं पर पोस्टग्रेस का ctid . है काम आता है, क्योंकि यह प्रत्येक पंक्ति के लिए एक आंतरिक विशिष्ट पहचानकर्ता है। ध्यान दें कि आपको कभी भी ctid . का उपयोग नहीं करना चाहिए केवल एक से अधिक कथन के लिए। यह एक सार्वभौमिक रूप से अनूठी चीज नहीं है, लेकिन किसी एक कथन के रनटाइम के लिए यह ठीक है।

SQLFiddle उदाहरण:http://sqlfiddle.com/#!15/dabfc/1

अगर आप सभी से छुटकारा पाना चाहते हैं डुप्लिकेट की गई पंक्तियाँ:

delete from join_table
where (id1, id2) in (select id1, id2
                     from join_table
                     group by id1, id2
                     having count(*) > 1);

बड़ी मेज पर कोई भी समाधान तेज नहीं होगा। यदि आपको बड़ी तालिका से पर्याप्त संख्या में पंक्तियों की आवश्यकता है, तो डुप्लिकेट के बिना एक नई तालिका बनाना, जैसा कि jjanes ने दिखाया है, बहुत तेज़ होगा।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP JSON समस्या का उपयोग करके SQL डेटाबेस से Google Vis ने टाइमलाइन को एनोटेट किया

  2. त्रुटि कॉलम c.CreatedOn मौजूद नहीं है... पोस्टग्रेएसक्यूएल लॉग में कोड प्रथम संदर्भ आरंभीकरण के दौरान Devart dotConnect प्रदाता का उपयोग करते हुए

  3. मैं PostgreSQL में नामित विंडो विभाजन (उपनाम) कैसे बनाऊं?

  4. पोस्टग्रेज में क्वेरी से घंटा कैसे निकालें

  5. नया ट्रिगर बनाने का प्रयास करते समय SQL त्रुटि