【问题标题】:Remove first row of all certain duplicate entries in MySQL删除 MySQL 中所有某些重复条目的第一行
【发布时间】:2011-04-22 12:34:52
【问题描述】:

我的问题是我的表中有重复的条目。然而,事情并没有那么简单。有些是有效的重复,有些则不是。例如,E Pearl River, NYEast Pearl River, NY 是同一个城市,而 Bardonia, NYNanuet, NY 不是。因此,如果我删除所有重复项,它将删除像巴多尼亚这样的有效城市。

我的问题是,有没有人知道一种方法(在 SQL 或任何编程语言中)循环遍历每一行并执行以下操作:

  • 检查行是否重复
  • 检查是否有部分匹配 city(即 E Pearl River, NY 和 East Pearl River, NY
  • 删除第一个重复行
  • 如果city(即纽约州巴多尼亚和纽约州纳努埃)没有部分匹配,请继续。

之前

+—————————+——————————————————————+
| zipcode |        city          |
+—————————+——————————————————————+
|  10956  | E Pearl River, NY    |
|  10956  | East Pearl River, NY |
|  10977  | Spring Valley, NY    |
|  10954  | Bardonia, NY         |
|  10954  | Nanuet, NY           |
+—————————+——————————————————————+

之后

+—————————+——————————————————————+
| zipcode |        city          |
+—————————+——————————————————————+
|  10956  | East Pearl River, NY |
|  10977  | Spring Valley, NY    |
|  10954  | Bardonia, NY         |
|  10954  | Nanuet, NY           |
+—————————+——————————————————————+

非常感谢任何帮助!

【问题讨论】:

    标签: php mysql phpmyadmin


    【解决方案1】:

    您的问题没有简单的解决方案,因为它涉及自然语言处理。

    您如何定义 E Pearl River, NYEast Pearl River, NY 重复?东、西珠江呢?对于自然语言处理,您应该查看 LuceneMySQL Full-Text Search

    对于相当简单(但不一定非常准确)的解决方案,您可以尝试实施简单的Levenshtein distance 措施。

    【讨论】:

    • 认为这可能是个问题 -- 我会调查这些,谢谢。
    猜你喜欢
    • 2014-04-15
    • 1970-01-01
    • 2018-10-16
    • 1970-01-01
    • 2021-01-28
    • 2014-08-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-04
    相关资源
    最近更新 更多