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

तालिका से डुप्लिकेट पंक्तियों को बिना किसी अद्वितीय कुंजी के हटाएं

यदि आप पूरी तालिका को फिर से लिखने का जोखिम उठा सकते हैं, तो यह शायद सबसे आसान तरीका है:

WITH Deleted AS (
  DELETE FROM discogs.releases_labels
  RETURNING *
)
INSERT INTO discogs.releases_labels
SELECT DISTINCT * FROM Deleted

यदि आपको डुप्लीकेट रिकॉर्ड को विशेष रूप से लक्षित करने की आवश्यकता है, तो आप आंतरिक ctid . का उपयोग कर सकते हैं फ़ील्ड, जो विशिष्ट रूप से एक पंक्ति की पहचान करता है:

DELETE FROM discogs.releases_labels
WHERE ctid NOT IN (
  SELECT MIN(ctid)
  FROM discogs.releases_labels
  GROUP BY label, release_id, catno
)

ctid . से बहुत सावधान रहें; यह समय के साथ बदलता है। लेकिन आप एक ही कथन के दायरे में समान रहकर उस पर भरोसा कर सकते हैं।



  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. क्या किसी तालिका को डेटा से भरने से पहले, या डेटा के स्थान पर होने के बाद एक अनुक्रमणिका बनाना बेहतर है?

  3. JPA 2.1 PostgreSQL और REF_CURSORs के साथ StoredProcedureQuery

  4. रेल में माइग्रेशन में एसक्यूएल कैसे लिखें

  5. कैसे pg_sleep () PostgreSQL में काम करता है