【发布时间】:2013-08-19 13:17:30
【问题描述】:
在将记录合并为一个时删除重复项的最佳方法是什么?
我有一种情况,表格会像这样跟踪玩家姓名和他们的记录:
stats
-------------------------------
nick totalgames wins ...
John 100 40
john 200 97
Whistle 50 47
wHiStLe 75 72
...
我需要合并 nick 重复的行(忽略大小写时)并将记录合并为一个,如下所示:
stats
-------------------------------
nick totalgames wins ...
john 300 137
whistle 125 119
...
我在 Postgres 中这样做。最好的方法是什么?
我知道我可以通过这样做来获取存在重复的名称:
select lower(nick) as nick, totalgames, count(*)
from stats
group by lower(nick), totalgames
having count(*) > 1;
我想到了这样的事情:
update stats
set totalgames = totalgames + s.totalgames
from (that query up there) s
where lower(nick) = s.nick
除非这不能正常工作。而且我似乎仍然无法删除包含重复名称的其他重复行。我能做些什么?有什么建议吗?
【问题讨论】:
-
您的统计表是否有唯一的数字 id 字段?
-
不,它没有。主键是 nick 列。我可以制作 id,但我也必须更改软件......(我一开始没有制作这些,后来我加入了)所以我认为这可能是不可能的。
-
没问题 - 这只是改变了我删除的方式。答案即将到来。
标签: sql postgresql duplicates