MySQL - 从表中选择唯一值

时间:2016-12-16 09:25:06

标签: php mysql distinct

我的MySQL表包含以下信息,

ID  User            City            HomeLatitude      HomeLongitude
1   Egon Spengler   New York        19.123456         23.43546
2   Mac Taylor      New York        19.12343588       23.43546
3   Sarah Connor    New York        19.128376         34.35354
4   Jean-Luc Picard La Barre        11.345455         12.4356546
5   Ellen Ripley    Nostromo        32.76865          78.345435

从这个表中我需要查询前两个小数点的唯一 HomeLatitude 值,因为前三个位置几乎相同,所以我只需要三行中的第一行..

我使用了以下给定的查询

SELECT DISTINCT HomeLatitude, City FROM user;

但是这将返回表中的所有行。任何人都可以帮助我。

3 个答案:

答案 0 :(得分:6)

ROUND函数会显示您想要显示的小数位数。

SELECT DISTINCT ROUND(HomeLatitude,2), City FROM user GROUP BY ROUND(HomeLatitude,2);

答案 1 :(得分:2)

类似的东西:

   SELECT (DISTINCT ROUND(HomeLatitude, 1)) AS HomeLatitude, City FROM user;

答案 2 :(得分:2)

虽然使用基于舍入纬度或经度的解决方案可能会给您带来结果,但也要为意外结果做好准备。两个地方也可能拥有完全相同的纬度,但不同的经度和副情况。

如果您正在进行任何类型的空间分析,您应该投资mysql spatial extensionsST_WITHIN等函数

第二个最佳选择是使用hasrsine公式或类似方法来查找彼此接近的位置。