MySQL选择查找具有匹配名称列的类似lat / lng

时间:2014-11-09 05:29:40

标签: mysql

我试图在一个具有相同纬度/经度的位置表中查找行,当舍入到2个小数位以及相同的名称时。这是我的表(例如):

+---------------------------------------+
| ID | lat     |  lng   |  name         |
+---------------------------------------+ 
| 11 | -11.119 | 13.891 | Smith's Place |
| 81 | -11.121 | 13.893 | Smith's Place |
+---------------------------------------+

什么SELECT语句会找到实例(如上所述),当舍入到2个小数位时,lat / lng匹配...并且名称相同?

我正在寻找类似于此查询的内容,显然不起作用(但是要求我追求的是):

SELECT * FROM pb_locations GROUP BY ROUND(lat,2),ROUND(lng,2) WHERE name = name HAVING count(ID) > 1

1 个答案:

答案 0 :(得分:1)

WHERE name = name始终是真的,因为它只是在同一行内进行比较,而不是跨越不同的行。

您需要将所有3列放在GROUP BY子句中。

SELECT *
FROM pb_locations
GROUP BY ROUND(lat, 2), ROUND(lng, 2), name
HAVING COUNT(*) > 1