用于映射重复条目以进行数据丰富的SQL查询

时间:2014-11-03 23:16:55

标签: sql postgresql deduplication

我对PostgreSQL很新。

我计划通过机械土耳其人运行产品数据集,以便用定价信息丰富数据。问题是我有80,000条用户上传的记录,其中许多是实际重复的,尽管它们可能有其他参数不重复。

如果我从SELECT DISTINCT查询中丰富数据,问题是我没有办法将这些数据添加到实际的"复制"条目。

如何查看从SELECT DISTINCT查询中删除的所有行,以便我可以在以后使用我的新数据返回并丰富这些行?

1 个答案:

答案 0 :(得分:1)

您应该DISTINCT要将{1}}字段视为表示重复的字段,而不是GROUP BY

然后你有几个选择:

  • array_agg非分组行;

  • GROUP BY ... HAVING count(...) > 1查询放入您在FROM子句中使用的子查询中,然后在分组所在列的原始表上进行自联接。这将让你找到所有重复的行。

  • 使用row_number() OVER (PARTITION BY col1, col2, col3) as dup_num的窗口函数,其中col1, col2, col3是您DISTINCT查询中当前的列。然后将其包装为FROM中的子查询并过滤WHERE dup_num > 1。此方法允许您仅查找重复行,即它排除了它将其视为原始行的一行。要控制哪些被视为重复,哪些被视为原始文件,您可以在ORDER BY窗口中使用OVER (...)子句。

我很确定已经有很多关于如何查找和返回重复项的示例。我建议在标记下搜索Stack Overflow查询重复项。