代码之家  ›  专栏  ›  技术社区  ›  Muthukumar Marichamy

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

  •  0
  • Muthukumar Marichamy  · 技术社区  · 7 年前

    我在PHPMYADMIN中使用了下面的查询来列出X公里内基于lat和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
    
    1 回复  |  直到 4 年前
        1
  •  2
  •   Gordon Linoff    7 年前

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

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

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