将重复记录合并为具有相同表和表字段的 1 条记录

nor*_*n V 5 sql postgresql function

我有一个包含人口统计记录列表的数据库表,其中一些参与者可能有多个/重复的记录,例如

注意:
性别:
119 = 男性
118 = 女性

种族:
255 = 白人
253 = 亚洲人


城市
农村:331 = 城市332 = 农村

participantid, gender, race, urbanrural, moduletypeid, hibernateid, and more fields
1, 119, 0, 331, 1, 1, .....
1, 119, 255, 0, 2, 2, .....
1, 0, 255, 331, 3, 3, .....
1, 119, 253, 331, 0, 4, .....
Run Code Online (Sandbox Code Playgroud)

输出应保留第一个 hibernateid,重复的记录将合并到第一个 hibernateid 记录。如果您可以使用将检查记录是否重复的功能来执行此操作,那么在合并记录后它会删除未使用的重复记录。你的回答给了我解决这个问题的好主意。谢谢

输出应该是:

participantid, gender, race, urbanrural, moduletypeid, hibernateid, and more fields
1, 119, 255, 331, 1, 1, .....
Run Code Online (Sandbox Code Playgroud)


帮帮我,谢谢

Eve*_*oob 0

所以你想要一个查询来查找/删除重复项,对吗?

如果是这样,请尝试以下操作:

SELECT T1.* FROM table_name T1, table_name T2
WHERE T1.dupe_field = T2.dupe_field
AND T1.other_dupe_field = T2.other_dupe_field
AND T1.primary_key > T2.primary_key;
Run Code Online (Sandbox Code Playgroud)

更改表和字段名称以适合您自己的表结构。

使用此 SELECT 查询确认它正在选择要删除的重复项,然后将其更改为 DELETE 以删除重复项。