【问题标题】:MySQL select to find similar lat/lng with matching name columnMySQL 选择以查找具有匹配名称列的相似 lat/lng
【发布时间】:2014-11-09 13:34:52
【问题描述】:

我正在尝试在单个位置表中查找在四舍五入到小数点后 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

【问题讨论】:

    标签: mysql


    【解决方案1】:

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

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

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

    【讨论】:

    • 我不知道你可以 GROUP BY 多行...这太棒了...谢谢!
    • 如果不合并多行,GROUP BY 还能做什么?你的意思是多列吗?你已经在你的问题中这样做了——你按 2 列分组,这只是 3。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-10
    • 1970-01-01
    • 2014-09-30
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    相关资源
    最近更新 更多