sql >> Databáze >  >> RDS >> PostgreSQL

SQL:Jak sloučit duplikáty nerozlišující malá a velká písmena

SQL Fiddle

Zde je vaše aktualizace:

 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;

Zde je smazání, které odstraní duplicitní řádky:

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

(Všimněte si, že syntaxe 'update...from' a 'delete...using' jsou specifické pro Postgres a byly bezostyšně ukradeny z tuto odpověď a tato odpověď .)

Pravděpodobně také budete chtít spustit toto, abyste snížili velikost všech jmen:

 UPDATE STATS SET nick = lower(nick);

Aaa a vhoďte jedinečný index na verzi „nick“ s malými písmeny (nebo přidejte do tohoto sloupce omezení, abyste zakázali hodnoty, které nejsou malými písmeny):

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


  1. Jaké jsou příslušné výhody/omezení Amazon RDS vs. EC2 s MySQL?

  2. Jak volat uloženou proceduru v JDBC

  3. nelze vytvořit uživatele postgres:role postgres neexistuje

  4. Jak uložit procentuální hodnotu?