2012-03-27 16 views
0

Ich suche nach Duplikaten in einer Google Map-Tabelle. Das Problem ist, die Breiten sind etwas anders und die Adressen sind leicht unterschiedlich (aber ich kann sagen, dass sie Duplikate sind). Daher möchte ich alle Datensätze erhalten, bei denen der Breitengrad bis zu 4 Nachkommastellen gleich ist. Wie kann das gemacht werden?Finden Sie doppelte mysql bis zu Ziffern

Etwas wie:

Select * from googlemap 
having count(len latitude > 4) > 1 

Felder:

point_id, entry_id, latitude, longitude, address, city, zipcode, state, field_id, icon, supplier_id

Beispieldaten aus der ersten Antwort :

'9', '51.5124', '9,557,885,908,964,1353,2145,2947' 
'17', '32.7921', '17,19,94,2652' 
'37', '32.7799', '37,101' 
'54', '34.0953', '54,165' 
'71', '42.3582', '71,2724' 
'73', '25.7660', '73,125' 
'100', '25.7906', '100,106' 
'112', '25.7870', '112,378' 
'113', '32.7114', '113,316' 
'114', '25.7689', '114,140' 
'129', '25.7708', '129,138,142' 
'148', '25.7518', '148,155' 
'156', '25.7710', '156,171' 
'172', '35.6563', '172,175' 
'174', '35.6559', '174,184' 
'194', '48.8677', '194,261' 
'195', '48.8661', '195,210,248,268' 
+0

Sie * könnte * nur überprüfen, ob 'ABS (g1.latitude - g2.latitude) <0.0001' (und dito für Längengrad) – alexis

Antwort

1

Wie wäre es damit?

SELECT ROUND(latitude,4), GROUP_CONCAT(point_id SEPARATOR ',') 
FROM googlemap 
GROUP BY ROUND(latitude,4) 
HAVING COUNT(*) > 1 
+0

was die Group_concat Teil tun? – jhowe

+0

@jeff - es gibt Ihnen nur die IDs der Datensätze, die diesen Breitengrad haben. –

+0

Ich dachte, das war es, aber ich glaube nicht, dass es richtig funktioniert Ich habe nach anderen IDs gesucht, kann sie aber nicht sehen ... – jhowe

2
SELECT * 
FROM googlemap g1 
INNER JOIN googlemap g2 
    ON TRUNCATE(g1.latitude, 4) = TRUNCATE(g2.latitude, 4) 
    -- AND TRUNCATE(g1.longitude, 4) = TRUNCATE(g2.longitude, 4) 
    AND g1.point_id < g2.point_id 
Verwandte Themen