sql >> Database teknologi >  >> RDS >> Mysql

Hvordan finder man nærmeste placering ved hjælp af bredde- og længdegrad fra SQL-database?

Sådan finder du steder i nærheden med MySQL

Her er SQL-sætningen, der finder de nærmeste 20 lokationer, der er inden for en radius af 25 miles til 37, -122 koordinaten. Den beregner afstanden baseret på den pågældende rækkes bredde/længdegrad og målbredde/længdegrad, og beder derefter kun om rækker, hvor afstandsværdien er mindre end 25, sorterer hele forespørgslen efter afstand og begrænser den til 20 resultater. For at søge efter kilometer i stedet for miles skal du erstatte 3959 med 6371.

Tabelstruktur:

id,name,address,lat,lng

BEMÆRK - Her breddegrad =37 &længdegrad =-122. Så du passerer bare din egen.

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

Du kan finde detaljer her .



  1. Hvordan indsætter man en ny række i databasen med AUTO_INCREMENT-kolonnen uden at angive kolonnenavne?

  2. Generisk Killed-fejl i PHP-script

  3. SQLite grupper efter/tæl timer, dage, uger, år

  4. Provisionering af MySQL/MariaDB Vault Database Secrets Engine med Terraform