我在 MYSQL 中有表以及纬度和经度值。
我想在当前经纬度的背景下获取 10 公里半径内的用户。
我正在尝试执行以下查询,但它给了我空输出。
SELECT
`id`,
`name`,
ACOS( SIN( RADIANS( `latitude` ) ) * SIN( RADIANS( $fLat ) ) + COS( RADIANS( `latitude` ) )
* COS( RADIANS( $fLat )) * COS( RADIANS( `longitude` ) - RADIANS( $fLon )) ) * 6380 AS `distance`
FROM `users`
WHERE
ACOS( SIN( RADIANS( `latitude` ) ) * SIN( RADIANS( $fLat ) ) + COS( RADIANS( `latitude` ) )
* COS( RADIANS( $fLat )) * COS( RADIANS( `longitude` ) - RADIANS( $fLon )) ) * 6380 < 10
ORDER BY `distance`
其中纬度和经度是列名称,$fLat 和 $fLon 是当前的纬度和经度值。
最佳答案
使用此查询您的问题将得到解决:
SELECT `id`, `name`, `phone`, `latitude`, `longitude`, SQRT( POW(69.1 * (`latitude` - 24.900363), 2) + POW(69.1 * (67.099760 - `longitude`) * COS(`latitude` / 57.3), 2))
AS `distance`
FROM `users` HAVING `distance` < 25
ORDER BY `distance`
关于mysql - MYSQL中获取距离10km的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43693317/