Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Odpytywanie MySQL o współrzędne szerokości i długości geograficznej, które znajdują się w określonym promieniu mili

Prawo sferyczne formuły cosinusów
(37 i -122 to szerokość i długość geograficzna środka promienia)

SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) 
    * cos( radians( long ) - radians(-122) ) + sin( radians(37) ) * sin(radians(lat)) ) ) AS distance 
FROM myTable
HAVING distance < 50
ORDER BY distance 

Funkcje

  • Najszybszy
  • Precyzja podobna do formuły Harvesine

Formuła Haversine

SELECT id, 3959 * 2 * ASIN(SQRT(POWER(SIN((37 - abs(lat)) * pi()/180 / 2), 2)
       + COS(37 * pi()/180 ) * COS(abs(lat) * pi()/180)
       * POWER(SIN((-122 - long) * pi()/180 / 2), 2) )) as  distance
FROM myTable
HAVING distance < 50
ORDER BY distance

Funkcje

  • Szybko
  • Bardziej odporny na błędy zmiennoprzecinkowe

Pamiętaj, że 3959 to promień Ziemi w milach . Promień Ziemi w kilometrach (km):6371

Więcej informacji znajdziesz tutaj




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Składnia SQL DROP TABLE — wymienione przez DBMS

  2. Błąd Mysql InnoDB 32 w systemie Windows

  3. 1. rząd w grupie według ostatniego rzędu

  4. Jak sprawdzić bazę danych iw rezultacie sprawdzić przycisk radiowy?

  5. Czy mogę użyć przygotowanej instrukcji PDO do powiązania identyfikatora (nazwy tabeli lub pola) lub słowa kluczowego składni?