PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

SQL:Cách hợp nhất các bản sao không phân biệt chữ hoa chữ thường

SQL Fiddle

Đây là cập nhật của bạn:

 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;

Đây là thao tác xóa để loại bỏ các hàng trùng lặp:

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

(Lưu ý rằng cú pháp 'update ... from' và 'delete ... using' là dành riêng cho Postgres và đã bị đánh cắp một cách đáng xấu hổ từ câu trả lời này câu trả lời này .)

Có thể bạn cũng sẽ muốn chạy điều này để viết thường tất cả các tên:

 UPDATE STATS SET nick = lower(nick);

Aaa và ném vào một chỉ mục duy nhất trên phiên bản viết thường của 'nick' (hoặc thêm một ràng buộc vào cột đó để không cho phép các giá trị không phải chữ thường):

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. PostgreSQL so sánh hai đối tượng jsonb

  2. MySQL tương đương với PHÂN TÍCH GIẢI THÍCH CỦA PostgreSQL là gì

  3. Cách tìm tất cả các sản phẩm có nhiều giá trị thuộc tính cụ thể

  4. Làm cách nào để chuyển đổi một khoảng thời gian thành một số giờ với postgres?

  5. Lỗi ngôn ngữ postgres