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

Come posso interrogare in mysql-table (dove sono memorizzati lat e long) quale è la posizione più vicina alla posizione inserita (lat e long)?

Suggerirei di limitare la tua posizione ad alcune condizioni che possono essere indicizzate. Puoi farlo facilmente perché probabilmente non vuoi elencare qualcuno dagli Stati Uniti a qualcuno a Parigi come luogo più vicino.

Con solo una piccola modifica alla query di RustamIS puoi eliminare la maggior parte delle posizioni irrilevanti.

select * from gps_location_table t 
where
    t.x between 20.134554 and 20.334554 and t.y between 56.11455255 and 56.31455255
order by 
    sqrt((t.x - 20.234554)*(t.x - 20.234554) + (t.y - 56.21455255)*(t.y - 56.21455255)
desc

Quindi hai definito un rettangolo in cui vuoi cercare le persone più vicine.