sql >> Database teknologi >  >> RDS >> PostgreSQL

SQL:Sådan flettes dubletter, der ikke skelner mellem store og små bogstaver

SQL Fiddle

Her er din opdatering:

 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;

Her er sletningen for at blæse de duplikerede rækker væk:

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

(Bemærk, at syntaksen 'opdater...fra' og 'slet...bruger' er Postgres-specifikke og blev stjålet skamløst fra dette svar og dette svar .)

Du vil sikkert også køre dette for at formindske alle navnene:

 UPDATE STATS SET nick = lower(nick);

Aaaand smid et unikt indeks ind på den lille version af 'nick' (eller tilføj en begrænsning til den kolonne for at forbyde værdier uden små bogstaver):

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


  1. Hvordan vælger man visse felter i Laravel Eloquent?

  2. MySQL slet række fra flere tabeller

  3. Hvordan forbedrer man denne php mysql-kode?

  4. Bliv tændt af Apache Spark – Del 2