根据postgresql中的另一个表更正列中的拼写错误
Posted
技术标签:
【中文标题】根据postgresql中的另一个表更正列中的拼写错误【英文标题】:Correct spelling mistakes in a column based on another table in postgresql 【发布时间】:2013-03-21 06:05:00 【问题描述】:我的 postgresql 表有一个 (cityname) 列。 (cityname) 列中的值有一些拼写错误。需要更正列(城市名称)的每条记录。另一个表有一列包含所有正确的城市名称。根据此表,需要更正第一个表的拼写错误。
【问题讨论】:
能否请您附上您已经编写的代码,并解释它的哪一部分给您带来了问题? Select * from table_1 A,table_2 B where A.add3=B.address and custno not in (Select custno from table_1 A,table_2 B where A.add2=B.address and custno not in (从 table_1 A,table_2 B 中选择 custno,其中 A.add1=B.address )) 和 custno in (Select distinct(B.custno) from table a,table b where acctstat in (1,2) 和 A.custno = B。 custno) 通过上述查询,我只能加入几条记录 也许您需要查看 Levenshtein distances 之类的内容 - 这些可以帮助您根据将一个字符串更改为另一个字符串所需的更改次数来确定最可能匹配拼写错误的单词。 【参考方案1】:您需要一列可以将表 A 中的行(有错误)与表 B 中的正确数据相关联。让我们假设您有可以完成这项工作的 city_id 列。
update table_A
set add1 = table_b.correct_add1
from table_A as j_table_A
join table_B on table_B.city_id = table_A.city_id
where j_table_A.primary_key_column = table_A.primary_key_column
您基本上引用了 table_A 两次。这样做没有充分的理由,但我发现如果您需要从联接中提取数据,那么在更新期间这是最简单的方法。
评论后编辑: 由于您无法将正确的数据与需要修复的数据(如 city_id)相关联,因此您需要处理您的连接条件并可能引入正则表达式。有一个链接here 可能有一些用处
【讨论】:
除了具有城市名称的列之外,我没有关联两个表的列。我需要使用名为 cityname 的列连接两个表以上是关于根据postgresql中的另一个表更正列中的拼写错误的主要内容,如果未能解决你的问题,请参考以下文章
如何从 PostgreSQL 中的另一个表中更新具有随机 id 的表