Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有差异的SQL组字符串_Sql_Postgresql_Group By - Fatal编程技术网

具有差异的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

我有一个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 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。你的问题没有意义。
选择
分组依据
列不匹配。