2011-04-22 101 views
1

我的問題是我的表中有重複的條目。但是,並不那麼簡單。一些是有效的重複,而另一些則不是。例如,E Pearl River, NYEast Pearl River, NY是同一城市,而Bardonia, NYNanuet, NY不是。所以,如果我刪除了所有重複項,它將刪除像Bardonia這樣的有效城市。刪除MySQL中所有某些重複條目的第一行

我的問題是,沒有人知道的每一行的方式(在SQL或任何編程語言)中循環,並做到以下幾點:

  • 檢查行復制
  • 檢查是否有對於city(即Ë珠江,NY和東珠江,NY)部分匹配
  • 刪除重複的行的第一
  • 如果有部分匹配city(即,巴爾多尼亞,紐約和紐約Nanuet),一起前進。

之前

+—————————+——————————————————————+ 
| 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   | 
+—————————+——————————————————————+ 

任何幫助,不勝感激!

回答

0

有你的問題不容易解決,因爲它涉及到自然語言處理。

你如何定義ē珠江,NY是重複的東珠江,NY?東西珠江流域呢?對於自然語言處理,你應該看看LuceneMySQL Full-Text Search

對於相當容易(但不一定很準確)的解決方案,你可以嘗試實現簡單Levenshtein distance措施。

+0

想這可能是一個問題 - 我會考慮這些,謝謝。 – stewart715 2011-04-22 12:47:27