mysql - 纠正基于mysql中另一个表的列中的拼写错误

标签 mysql sql soundex spelling

我的 mysql 表有一个 cityname 列。 cityname 列中的值存在一些拼写错误。 city 的每个拼写错误都需要纠正。另一个表有一列包含所有正确的城市名称。根据该表,需要更正第一个表的拼写错误。我研究了 soundex 之类的东西,但找不到任何完成类似操作的链接。

TableA 

+----+------------+----------+
| id | col1      | city_name   |
+----+------------+----------+


TableB

+----+------------+--
| index |City_name      |
+----+------------+--

我想到的方法是获取一个 SQL 查询,该查询从具有相似城市名称的行中创建单独的表。

完成后,再次使用 SQL 查询将错误的拼写替换为正确的拼写

最后将所有不同的表格合并为一个表格,其中所有拼写均已更正。

我正在寻找方法和 mysql 查询语法方面的建议

最佳答案

这将涉及一些手动工作,如果这是一次性的事情,为其构建前端可能不会有麻烦。

我要做的是:

  1. 生成所有拼写错误的列表。
  2. 根据 soundex 生成建议
  3. 手动浏览列表,手动选择正确的列表,并在每次修复时手动运行更新语句。

那么,如何做到这一点:

SELECT * FROM TableA as orig
LEFT OUTER JOIN
TableB as correct
ON SOUNDEX(orig.city_name) = SOUNDEX(correct.city_name)
WHERE orig.City_name NOT IN (SELECT City_name FROM TableB)

并手动编写更新语句。您可能不会通过 soundex 得到任何建议,或者得到多个选择,您必须自己解决这些问题。计算机没那么聪明。

关于mysql - 纠正基于mysql中另一个表的列中的拼写错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11157758/

相关文章:

php - Laravel - 停止多个查询链接

mysql - 使用 IF 语句根据 LEFT JOIN 获取所有字段

sql - 操作数数据类型 varchar 对于减法运算符无效

mysql - 编写 Select 查询以从一个表中扣除另一个表

sql - 优化 Soundex 查询以查找相似的名称

mysql - 两列主键、自增、外键

mysql - Laravel orderBy 大大减慢了响应速度

sql - 用于报告和日常交易的数据库

mysql - 如何在mysql中正确使用soundex()

sql - Mysql 关于更新和默认