Đâ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 và 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));