sql >> Database >  >> RDS >> Mysql

Query's op lengte- en breedtegraad in MySQL

U moet zoeken naar de formule van Haversine, maar een goed begin zou kunnen zijn:

Citeren vanaf de eerste url:

Hier is de SQL-instructie die de dichtstbijzijnde 20 locaties zal vinden binnen een straal van 40 mijl van de 37, -122 coördinaat. Het berekent de afstand op basis van de breedtegraad/lengtegraad van die rij en de beoogde breedtegraad/lengtegraad, en vraagt ​​dan alleen naar rijen waar de afstandswaarde kleiner is dan 25, rangschikt de hele zoekopdracht op afstand en beperkt deze tot 20 resultaten. Om te zoeken op kilometers in plaats van mijlen, vervangt u 3959 door 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. JQuery gebruiken om waarden in mySQL in te voegen

  2. GROEP OP met MAX datum

  3. MySql SELECT-unie voor verschillende kolommen?

  4. Elke kolom in een tabel indexeren