Postgres,earthdistance - 按 gps 距离排序结果
Postgres, earthdistance - sort results by gps distance
目前我有一个查询,它选择距离指定 GPS 坐标小于 X 公里的所有对象:
$query =
'SELECT * FROM t_activity WHERE
POINT(gps_lat||\',\'||gps_lon) <@>
POINT(
'.$gps_latitude.',
'.$gps_longitude.'
) <= '.$search_range;
我对数据库一点都不熟练,但我想知道:
是否也可以修改查询以便将其从最近到最远的结果排序?
根据你的查询我认为应该是
$query =
'SELECT * FROM t_activity WHERE
POINT(gps_lat||\',\'||gps_lon) <@>
POINT(
'.$gps_latitude.',
'.$gps_longitude.'
) <= '.$search_range.'
ORDER BY POINT(gps_lat||\',\'||gps_lon) <@>
POINT(
'.$gps_latitude.',
'.$gps_longitude.'
)
';
目前我有一个查询,它选择距离指定 GPS 坐标小于 X 公里的所有对象:
$query =
'SELECT * FROM t_activity WHERE
POINT(gps_lat||\',\'||gps_lon) <@>
POINT(
'.$gps_latitude.',
'.$gps_longitude.'
) <= '.$search_range;
我对数据库一点都不熟练,但我想知道:
是否也可以修改查询以便将其从最近到最远的结果排序?
根据你的查询我认为应该是
$query =
'SELECT * FROM t_activity WHERE
POINT(gps_lat||\',\'||gps_lon) <@>
POINT(
'.$gps_latitude.',
'.$gps_longitude.'
) <= '.$search_range.'
ORDER BY POINT(gps_lat||\',\'||gps_lon) <@>
POINT(
'.$gps_latitude.',
'.$gps_longitude.'
)
';