0

私は現在 Maxmind データベースに取り組んでいます。ただし、何十万もの重複エントリが含まれています。例えば:

ニューカッスル・アポン・タイン:

369137  GB  I7  Newcastle Upon Tyne NE20    54.9881 -1.6194
369332  GB  I7  Newcastle Upon Tyne NE6 54.9881 -1.6194
369345  GB  I7  Newcastle Upon Tyne NE13    54.9881 -1.6194
369355  GB  I7  Newcastle Upon Tyne NE3 54.9881 -1.6194
369356  GB  I7  Newcastle Upon Tyne NE5 54.9881 -1.6194
369645  GB  I7  Newcastle Upon Tyne NE4 54.9881 -1.6194
369706  GB  I7  Newcastle Upon Tyne NE15    54.9881 -1.6194
369959  GB  I7  Newcastle Upon Tyne NE12    54.9881 -1.6194
370114  GB  I7  Newcastle Upon Tyne NE27    54.9881 -1.6194

Newcastle (ここに貼り付けるには多すぎるため、一部を削除しました):

382 ZA  2   Newcastle       -27.758 29.9318
2279    US  OK  Newcastle   73065   35.2323 -97.6008
26459   US  CA  Newcastle   95658   38.873  -121.1543
22382   CA  ON  Newcastle   l1b1j9  43.9167 -78.5833
38995   AU  2   Newcastle       -32.9278    151.7845
40025   US  ME  Newcastle   4553    44.0438 -69.5675
47937   GB  I7  Newcastle       54.9881 -1.6194
119830  US  ME  Newcastle   4553    44.0438 -69.5675
119982  US  NE  Newcastle   68757   42.6475 -96.9232
115052  US  CA  Newcastle   95658   38.873  -121.1543
120603  US  NE  Newcastle   68757   42.6475 -96.9232
127931  US  OK  Newcastle   73065   35.2323 -97.6008
136726  CA  ON  Newcastle       43.9167 -78.5833
136915  US  TX  Newcastle   76372   33.245  -98.9103
137128  US  WY  Newcastle   82701   43.8396 -104.5681
137130  US  WY  Newcastle   82701   43.8396 -104.5681

世界には複数のニューカッスルの都市があり、同じ緯度/経度が含まれていてもニューカッスルのすべての異なる郵便番号を返すことを考えると、重複したエントリを削除するにはどうすればよいでしょうか?

この潜在的な解決策を思いついたデータベースからの重複都市の削除を調べました。

delete from climate.maxmind_city mc where id in (
select
  max(c1.id)
from
  climate.maxmind_city c1,
  climate.maxmind_city c2
where
  c1.id <> c2.id and
  c1.country = c2.country and
  c1.name = c2.name and
  earth_distance(
    ll_to_earth( c1.latitude_decimal, c1.longitude_decimal ),
    ll_to_earth( c2.latitude_decimal, c2.longitude_decimal ) ) <= 35
group by
  c1.country, c1.name
order by
  c1.country, c1.name
)

ただし、earth_distance は postgresql 関数であり、MySQL を使用しています。したがって、earth_distance 関数を同様の MySQL アプローチに置き換えるにはどうすればよいでしょうか?

4

0 に答える 0