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

एसक्यूएल:केस-असंवेदनशील डुप्लिकेट को कैसे मर्ज करें

SQL Fiddle

यह रहा आपका अपडेट:

 UPDATE stats
 SET totalgames = x.games, wins = x.wins
 FROM (SELECT LOWER(nick) AS nick, SUM(totalgames) AS games, SUM(wins) AS wins
     FROM stats
      GROUP BY LOWER(nick) ) AS x
 WHERE LOWER(stats.nick) = x.nick;

डुप्लिकेट पंक्तियों को दूर करने के लिए यहां हटाएं:

 DELETE FROM stats USING stats s2
 WHERE lower(stats.nick) = lower(s2.nick) AND stats.nick < s2.nick;

(ध्यान दें कि 'अपडेट...फ्रॉम' और 'डिलीट... यूजिंग' सिंटैक्स पोस्टग्रेज-विशिष्ट हैं, और यह उत्तर और यह जवाब ।)

आप शायद सभी नामों को छोटा करने के लिए भी इसे चलाना चाहेंगे:

 UPDATE STATS SET nick = lower(nick);

आआंद 'निक' के लोअरकेस संस्करण पर एक अद्वितीय इंडेक्स में फेंक दें (या गैर-लोअरकेस मानों को अस्वीकार करने के लिए उस कॉलम में एक बाधा जोड़ें):

CREATE UNIQUE INDEX ON stats (LOWER(nick)); 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. अंतिम 10 तिथियों के लिए पंक्तियाँ प्राप्त करें

  2. [वीडियो] Ansible और PostgreSQL

  3. मल्टी-कैरेक्टर स्ट्रिंग्स के साथ वर्णों को बदलें

  4. पोस्टग्रेज से जुड़ने में नोड .NET कोर से 20 गुना तेज है

  5. SQLAlchemy, Psycopg2 और Postgresql COPY