PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

SQL:Cara menggabungkan duplikat case-insensitive

SQL Fiddle

Ini pembaruan Anda:

 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;

Berikut ini penghapusan untuk menghapus baris duplikat:

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

(Perhatikan bahwa sintaks 'update...from' dan 'delete...using' khusus untuk Postgres, dan dicuri tanpa malu-malu dari jawaban ini dan jawaban ini .)

Anda mungkin juga ingin menjalankan ini untuk memperkecil semua nama:

 UPDATE STATS SET nick = lower(nick);

Aaaand masukkan indeks unik pada versi huruf kecil 'nick' (atau tambahkan batasan ke kolom itu untuk melarang nilai non-huruf kecil):

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. Bagaimana cara menjalankan file SQL di PostgreSQL menggunakan terminal Linux?

  2. PostgreSQL:pemulihan basis data dari dump - kesalahan sintaksis

  3. LOWER() – Konversikan ke Huruf Kecil di PostgreSQL

  4. PostgreSQL - Tambahkan kunci ke setiap objek dari array JSONB

  5. Bagaimana memahami ANALISIS JELASKAN