【问题标题】:SQL: Return all records ignoring duplicates based on a field in postgresqlSQL:根据postgresql中的字段返回所有忽略重复的记录
【发布时间】:2014-11-01 20:15:34
【问题描述】:

我有一个看起来像这样的数据库:

Incremental_ID | First Name | Last Name | Email | Data1 | Data2 | Concat

该数据库包含一百万条记录,大约是大约 200,000 名客户,这些记录来自其他各种数据库,因此一条记录可能有 Data1,而另一条记录可能没有 Data1,而是 Data2。为了查找重复项,我创建了记录 Concat,其中包含在每个文件(名字、姓氏、电子邮件)中找到的所有客户数据,以便为每个客户提供唯一的价值。

除非 concat 值已经返回,否则我如何告诉 postgresql 返回每一行?

【问题讨论】:

  • 我假设数据不同,否则Distinct 可能是一个选项。但是如果有重复,你如何确定返回哪条记录?
  • 我不太明白,最后一行表明你只想要where concat is null。但我看不出data 列是如何适应的。

标签: sql postgresql duplicates


【解决方案1】:

我想你可以用distinct on做你想做的事:

select distinct on (concat) t.*
from table t
order by concat, incremental_id;

这将根据incremental_id 返回每​​个“concat”的第一行。

【讨论】:

    猜你喜欢
    • 2018-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    • 2013-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多