Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.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_Select_Group By - Fatal编程技术网

Sql 如何在数据库中找到相同或相似名称的重复公司数

Sql 如何在数据库中找到相同或相似名称的重复公司数,sql,select,group-by,Sql,Select,Group By,到目前为止,我正在做: SELECT c.name, COUNT(*) FROM companies c group by c.name HAVING COUNT(*) >1; 但很明显,这不允许我找到名称相似但不完全相同的公司。我怎么找到这个 例如,相同的名称是: Walmart Inc. Walmart Inc. 不同的名称是: Walmart Inc. Walmart, Inc Walmart Walmart Incorporated etc. 尽管名称不同,但应将这些

到目前为止,我正在做:

SELECT c.name, COUNT(*)
FROM companies c
group by c.name
HAVING COUNT(*) >1;
但很明显,这不允许我找到名称相似但不完全相同的公司。我怎么找到这个

例如,相同的名称是:

Walmart Inc.

Walmart Inc.
不同的名称是:

Walmart Inc.

Walmart, Inc

Walmart

Walmart Incorporated etc.

尽管名称不同,但应将这些公司标识为相同的。

这通常被称为模糊搜索,这是一个与全文搜索相关的概念。您的问题是,您已将分组添加到问题中

所以,对于您的特定示例,您需要创建一个中间表,其中包含所有形式的文本,以便映射回单个可分组实体(外键)

如果您只想搜索所有形式的沃尔玛,您可以使用
如“%Walmart%”
where contains(名称,“Walmart”)
等,具体取决于您的SQL风格。但这些都是简单的搜索where子句。您正试图按所有已知变量进行分组,这意味着您必须首先识别表中的所有已知变量,然后映射到单个确定性映射键或值

以谷歌快速搜索为例

如果你只关心沃尔玛,你可能会通过一个复杂的CTE逃过一劫,该CTE将所有形式的沃尔玛动态地放到一个键中。。。但我猜你的桌子上的物品要比那些有各种形式的物品多得多


故事的寓意。。。这是由于前期数据质量差/数据管理不到位导致的,您最终不得不为此类工作支付费用。

请定义完全相似但不完全相同的内容。样本数据和期望的结果将有助于澄清您的问题陈述。是的,我正在为数据库中的所有公司尝试这一点。看起来可能很难。谢谢我们大多数人都会在某个时刻发现自己在那里。。。祝你好运