MySQL: поиск дубликатов в трех таблицах широты, которые находятся в пределах X футов друг от друга - PullRequest
1 голос
/ 14 апреля 2019

У меня есть три таблицы (t1, t2, t3), каждая из которых содержит id, lat, lng. Есть возможные дублирующие записи, которые я хочу идентифицировать и, возможно, устранить (если они действительно дублируют). Проблема в том, что значения lat и lng могут не совпадать с EXACT, поэтому типичный метод count (*)> 1 для поиска дубликатов не будет работать, так как я хочу учесть небольшую дисперсию геолокации (скажем, 250 футов или около 0,005 градусов в каждом широта и долгота) в любом заданном направлении.

Я нашел подобный вопрос здесь, но он не идентифицирует эту точную проблему, и я не смог экстраполировать этот код для моего ответа: Все широты Lng таблицы sql в пределах 15 км от каждой широты Lng другой таблицы-sql 2008

Я нашел какой-то код, который работает для идентификации EXACT дубликатов lat / lng, но он не говорит мне, в каких таблицах находятся дубликаты, так что я могу вручную исследовать их или учесть даже малейшее отклонение в lat / lng и только возвращает один id, lat, lng и count для каждого дубликата.

Могут быть «дубликаты» с широтами 32,333 и 32,336, но приведенный ниже код не будет учитывать их, поскольку он будет видеть их как уникальные.

`SELECT id, lat, lng, COUNT( * ) 
    FROM (
        SELECT id, lat, lng
        FROM t1
    UNION ALL 
        SELECT id, lat, lng
        FROM t2
    UNION ALL 
        SELECT id, lat, lng
        FROM t3
    ) tbl
GROUP BY lat, lng
HAVING COUNT( * ) >1
ORDER BY lat;`

В идеале вывод должен выглядеть примерно так:

`t1.id  t2.id   t3.id
432     1087        <-- found 2 rows within 250 of each other in t1 & t2
12      832         <-- found 2 rows within 250 of each other in t1 & t3
88      654      789<-- found 3 rows within 250 of each other in t1,t2&t3`

An example of "close duplicates" would be:
32.332, -87.556
32.336, -87.560
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...