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

Obliczanie odległości MySQL (proste rozwiązanie)

Nie możesz odwoływać się do aliasu w klauzuli select z innej części instrukcji sql. Musisz umieścić całe wyrażenie w klauzuli where:

WHERE
    ROUND( SQRT( POW( ( (69.1/1.61) * ('52.64' - latitude)), 2)
        + POW(( (53/1.61) * ('6.88' - longitude)), 2)), 1) < 10

Czystszym rozwiązaniem byłoby użycie podzapytania do wygenerowania obliczonych danych:

  SELECT *, distance
    FROM (
       SELECT *,
           ROUND( SQRT( POW( ( (69.1/1.61) * ('52.64' - latitude)), 2)
               + POW(( (53/1.61) * ('6.88' - longitude)), 2)), 1) AS distance
           FROM lp_relations_addresses
       ) d
   WHERE d.distance < 10
ORDER BY d.distance DESC

Demo:http://www.sqlize.com/q96p2mCwnJ



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Próba wprowadzenia danych do tabeli SQL przy użyciu PHP / Html z formularza rejestracyjnego

  2. Jak uzyskać informacje o ID połączenia na żądanie?

  3. Jak zaktualizować wiele duplikatów z różnymi wartościami w tej samej tabeli?

  4. Zastąp symbol wieloznaczny MySQL

  5. konwertowanie hashmap na stringarray