Mysql 根据lat和long将用户给定半径内的用户列为动态用户

Mysql 根据lat和long将用户给定半径内的用户列为动态用户,mysql,Mysql,我在PHPMYADMIN中使用了下面的查询,根据lat和X公里内的long列出了用户。但是,我得到了下面的错误。我的mysql版本是5.6 查询: SELECT ( ATAN ( SQRT( POW( COS( RADIANS( markers.lat ) ) SIN( RADIANS( markers.lng ) - RADIANS( -122 ) ) , 2 ) + POW( COS( RADIANS( 37 ) ) SIN( RADIANS( markers.lat ) ) - S

我在PHPMYADMIN中使用了下面的查询,根据lat和X公里内的long列出了用户。但是,我得到了下面的错误。我的mysql版本是5.6

查询:

SELECT 

( ATAN ( SQRT( POW( COS( RADIANS( markers.lat ) )  SIN( RADIANS( markers.lng ) - RADIANS( -122 ) ) , 2 ) + POW( COS( RADIANS( 37 ) )  SIN( RADIANS( markers.lat ) ) - SIN( RADIANS( 37 ) )  COS( RADIANS( markers.lat ) )  COS( RADIANS( markers.lng ) - RADIANS( -122 ) ) , 2 ) ) , SIN( RADIANS( -122 ) )  SIN( RADIANS( markers.lat ) ) + COS( RADIANS( 37 ) )  COS( RADIANS( markers.lat ) )  COS( RADIANS( markers.lng ) - RADIANS( -122 ) ) ) 6371000) AS distance, markers.id FROM markers ORDER BY distance ASC LIMIT 0 , 30
错误:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '( RADIANS( markers.lng ) - RADIANS( -122 ) ) , 2 ) + POW( COS( RADIANS( 37 ) ) ' at line 1

代码中有很多错误。例如,这不是有效的SQL:

POW( COS( RADIANS( 37 ) ) SIN( RADIANS( markers.lat ) ) 

你需要一个逗号,但这不是正确的公式。我建议您从一个工作查询开始,并替换变量。

代码中有很多错误。例如,这不是有效的SQL:

POW( COS( RADIANS( 37 ) ) SIN( RADIANS( markers.lat ) ) 

你需要一个逗号,但这不是正确的公式。我建议您从一个工作查询开始,并替换变量。

即使我按照下面的链接(google map api详细信息)进行了尝试,我也没有收到任何错误,但结果是空的。选择id,(3959*acos(cos(弧度(37))*cos(弧度(lat))*cos(弧度(lng)-弧度(-122))+sin(弧度(37))*sin(弧度(lat)))作为与距离限制为0,20的距离小于25阶的标记的距离;删除
HAVING
,看看你是否同意你看到的结果。即使我按照下面的链接(谷歌地图api详细信息)进行了尝试,我也没有得到任何错误,但是,结果是空的。选择id,(3959*acos(cos(弧度(37))*cos(弧度(lat))*cos(弧度(lng)-弧度(-122))+sin(弧度(37))*sin(弧度(lat)))作为与距离限制为0,20的距离小于25阶的标记的距离;删除
HAVING
并查看您是否同意所看到的结果。