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将所有形式的沃尔玛动态地放到一个键中。。。但我猜你的桌子上的物品要比那些有各种形式的物品多得多
故事的寓意。。。这是由于前期数据质量差/数据管理不到位导致的,您最终不得不为此类工作支付费用。请定义完全相似但不完全相同的内容。样本数据和期望的结果将有助于澄清您的问题陈述。是的,我正在为数据库中的所有公司尝试这一点。看起来可能很难。谢谢我们大多数人都会在某个时刻发现自己在那里。。。祝你好运