我的表包含lat和lng列:
lng |双精度|不为空
lat |双精度|不为空
我想只检索位置(lat,lng)的结果。
我该怎么办?
答案 0 :(得分:2)
这就是我解决它的方法:
select * , ( point(lat, lng) <-> point($lat, $lng) )*111.325 AS distance
order by distance
按距离增加的顺序得到结果,距离以公里为单位。
答案 1 :(得分:2)
更好的方法是,您可以借助postgis
为地理空间查询创建单独的几何/地理列。
CREATE EXTENSION postgis;
ALTER TABLE your_table ADD COLUMN geom geometry(Point, 4326);
UPDATE your_table SET geom=st_SetSrid(st_MakePoint(lng, lat), 4326);
更新表后,您可以执行简单的最近邻居查询,如下所述。
SELECT name FROM your_table ORDER BY geom <-> ST_GeomFromText ('POINT(-49.2653819 -25.4244287 )', 4326);
将返回给定点的最近记录。