sql >> Databasteknik >  >> RDS >> Mysql

MySQL välj koordinater inom räckvidd

Du kan använda det som kallas Haversine-formeln .

$sql = "SELECT *, ( 3959 * acos( cos( radians(" . $lat . ") ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(" . $lng . ") ) + sin( radians(" . $lat . ") ) * sin( radians( lat ) ) ) ) AS distance FROM your_table HAVING distance < 5";

Där $lat och $lng är koordinaterna för din punkt, och lat/lng är dina tabellkolumner. Ovanstående listar platserna inom ett intervall på 5 nm. Ersätt 3959 av 6371 för att ändra till kilometer.

Den här länken kan vara användbar:https://developers.google.com/maps/articles/phpsqlsearch_v3

Edit:Jag såg inte att du nämnde Java. Det här exemplet är i PHP men frågan är fortfarande vad du behöver.



  1. Hämta den sista posten i varje grupp - MySQL

  2. Ordning efter specifikt fältvärde först

  3. Skapa en DML-utlösare i SQL Server

  4. Hur man subtraherar timmar från ett Datetime-värde i MariaDB