我的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;
但是这将返回表中的所有行。任何人都可以帮助我。
答案 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 extensions和ST_WITHIN等函数
第二个最佳选择是使用hasrsine公式或类似方法来查找彼此接近的位置。