sql >> Databasteknik >  >> RDS >> Mysql

mySQL longitud och latitud fråga för andra rader inom x mile radie

Här är frågan jag använder på butikssökaren jag arbetar med:

SELECT
    `id`,
    (
        6371 *
        acos(
            cos( radians( :lat ) ) *
            cos( radians( `lat` ) ) *
            cos(
                radians( `long` ) - radians( :long )
            ) +
            sin(radians(:lat)) *
            sin(radians(`lat`))
        )
    ) `distance`
FROM
    `location`
HAVING
    `distance` < :distance
ORDER BY
    `distance`
LIMIT
    25

:lat och :long är de punkter som passerat av användaren där lat och long är de punkter som lagras i databasen.

:distansen mäts i miles, i den fungerande versionen av koden dras :distansen faktiskt från en rullgardinsmeny som sträcker sig från 10-50 miles

Att ändra koden för att fungera med kilometer kan åstadkommas genom att ändra 3959 (avståndet från jordens centrum till dess yta i miles) till 6371 (3959 miles omvandlat till kilometer) tack vare joshhendo för den lösningen.




  1. Utveckla PostgreSQL för Windows, del 1

  2. Hur Postgresql KOPIERA TILL STDIN Med CSV gör om konflikter gör uppdatering?

  3. Steg för att ändra administratörslösenord som har förlorats eller glömts av en EBS WebLogic Domain R12.2

  4. WordPress MySQL SQL-frågefel i WPDB-klass