sql >> Databáze >  >> RDS >> Mysql

Dotazování v rámci zeměpisné délky a šířky v MySQL

Měli byste hledat vzorec Haversine, ale dobrý začátek by mohl být:

Citace z první adresy URL:

Zde je příkaz SQL, který najde 20 nejbližších míst, která jsou v okruhu 25 mil od souřadnice 37, -122. Vypočítá vzdálenost na základě zeměpisné šířky/délky daného řádku a cílové zeměpisné šířky/délky a poté se zeptá pouze na řádky, kde je hodnota vzdálenosti menší než 25, seřadí celý dotaz podle vzdálenosti a omezí jej na 20 výsledků. Chcete-li hledat podle kilometrů místo mílí, nahraďte 3959 6371.

SELECT
    id,
    ( 3959
      * acos( cos( radians(37) )
              * cos(  radians( lat )   )
              * cos(  radians( lng ) - radians(-122) )
            + sin( radians(37) )
              * sin( radians( lat ) )
            )
    )
    AS distance
FROM markers
HAVING distance < 25
ORDER BY distance
LIMIT 0 , 20;


  1. Aktualizujte příkaz v MySQL pomocí C#

  2. Uložená procedura MySQL s parametry

  3. Jak automaticky zvýšit o 2 pro konkrétní tabulku v mysql

  4. Oracle - doslovný neodpovídá chyba formátovacího řetězce