【问题标题】:Is There a Way to Combine Similar Rows in SQL Based on a Value That Isn't Exactly the Same?有没有一种方法可以根据不完全相同的值在 SQL 中组合相似的行?
【发布时间】:2022-01-09 10:06:10
【问题描述】:

我有一个 SQL 表,您可以在其中添加品牌名称,当添加新品牌名称时,它会增加现有品牌活跃计数或创建新品牌名称。

问题是,如果有人添加了一个拼写不同的新品牌(例如添加了 Toyota,但拼写为 toyota),它会创建一个具有新活动计数和新品牌 ID 的新品牌。既然表中有几个这样的实例,有没有办法我可以用 SQL 进行排序并合并相似的品牌?我知道这最终会删除几行,我不确定 SQL 是否有能力一次性完成所有操作。

我对 SQL 还是比较陌生,因此我们非常感谢任何有关此方面的建议。我听说使用 Python Pandas 会更容易,所以我目前正在研究一种方法来做到这一点。

【问题讨论】:

  • 处理这个问题的正常方法是在 UI 层:使添加新品牌变得更加困难(显示确认以确保)并且更容易与现有品牌匹配(自动完成,因此使用现有品牌少打字)。
  • collation 应该是case insensitive

标签: mysql sql pandas database merge


【解决方案1】:

如果是简单的大小写更改,您可以使用 LOWER() 之类的函数将它们全部转换为小写,然后根据品牌名称将结果组合在一起, 但是,您的问题是“相似”的记录,其中相似的定义不是很好。 SQL 语言希望您清楚地定义您需要什么

如果您要修复一个/几个字符,您可以使用带有百分比 (%) 和 / 或下划线 (_) 符号的 LIKE operator。您可以通过在不同位置放置%_ 来定义您想要识别的所有错误排列。或者,您也可以在 MySQL 中探索 SOUNDEX functionsounds like,看看是否可以基于 SOUNDEX 合并品牌名称。

如果数据不是很大,我会建议你创建另一个表/临时表来执行这样的操作。这样,您始终可以参考原始数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-09
    • 2021-10-08
    • 2011-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多