具有差异的SQL组字符串
我有一个sql查询:具有差异的SQL组字符串,sql,postgresql,group-by,Sql,Postgresql,Group By,我有一个sql查询: select u.name, c.name from user u JOIN customer c on u.id = c.id group by (u.name, c.join_date) 这很好,但User表中的一些名称写得不同,但有1或2个字符的差异。我如何扩展此查询以便将诸如Mary Kate、Mary Kate和Mary Kate之类的字符串分组在一起?我不太了解您的代码,因为选择条件和分组依据条件不匹配。你的问题是: 如何扩展此查询,以便将诸如Mary Kat
select u.name, c.name
from user u
JOIN customer c on u.id = c.id
group by (u.name, c.join_date)
这很好,但User表中的一些名称写得不同,但有1或2个字符的差异。我如何扩展此查询以便将诸如Mary Kate、Mary Kate和Mary Kate之类的字符串分组在一起?我不太了解您的代码,因为
选择
条件和分组依据
条件不匹配。你的问题是:
如何扩展此查询,以便将诸如Mary Kate、Mary Kate和Mary Kate之类的字符串分组在一起
让我假设查询与问题匹配。说:
select u.name, count(*)
from user u
group by u.name;
然后根据您的示例,您只能对名称中的字符进行聚合。这建议regexp\u replace()
替换非字符:
select min(u.name), count(*)
from user u
group by regexp_replace(u.name, '[^[:alpha:]]', '', 'g');
如果您对
join
ing有实际问题,请提出新问题。提供示例数据、期望的结果,并清楚地解释您想要做什么。尽量避免语法错误的查询。您正在寻找一种称为模糊匹配的查询。我建议你考虑一下隐喻。下面的文章应该会有所帮助。我知道这样的名称存在,但我不知道如何将其添加到group by。如果有许多这样的名称,如果不匹配,则无法执行此操作。但是如果只有Mary Kate,你可以使用“case when”。@M8765。你的问题没有意义。选择
和分组依据
列不匹配。