2012-03-27 31 views
0

我正在尋找重複在谷歌地圖表。問題是緯度略有不同,地址略有不同(但我可以告訴他們是重複的)。因此,我希望獲得所有記錄的緯度相同的小數點後4位。如何才能做到這一點?找到重複的數據庫的最大數字位數

喜歡的東西:

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

領域:

point_identry_idlatitudelongitudeaddresscityzipcodestatefield_idiconsupplier_id

從第一個答案的樣本數據:

'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

*您可以只*檢查'ABS(g1.latitude - g2.latitude)<0.0001'(同上和經度) – alexis 2012-03-27 17:10:36

回答

1

這個怎麼樣?

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

什麼是GROUP_CONCAT部分在做什麼? – jhowe 2012-03-27 17:04:55

+0

@jeff - 它只是給你具有該緯度的記錄的ID。 – 2012-03-27 17:11:39

+0

我以爲是這樣,但我不認爲這工作正常我檢查看到其他身份證,但看不到他們... – jhowe 2012-03-27 17:14:12

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