我们将公司的数据存储在表中。为了消除重复行,我们需要使用以下标准来识别公司的重复数据集:如果CompanyName,City和邮政编码的前五个字母与其他记录的相同字段匹配,则为重复。稍后我们将删除重复项。我遇到的问题是,由于我没有按ID对记录进行分组,所以无法检索这些记录的ID。我正在使用以下SQL:
Select count(ID) as DupCount
, SUBSTRING(Name,1,5) as Name
, City
, PostalCode
from tblCompany
group by SUBSTRING(Name,1,5)
, City
, PostalCode
Having count(ID) > 1
order by count(ID) desc
我如何检索这些记录的ID?
您可以使用窗口功能:
Select c.*
from (select c.*,
count(*) over (partition by left(Name, 5), City, PostalCode) as cnt
from tblCompany c
) c
where cnt >= 2;
这将返回带有dups的各个行。然后,您可以对此进行汇总或对结果集执行所需操作。
使用group_concat()
以逗号分隔列表的形式获取ID:
group_concat()