Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann ich in der MySQL-Tabelle (wo Lat und Long gespeichert sind) abfragen, welche Position der eingegebene Position (Lat und Long) am nächsten liegt?

Ich würde vorschlagen, Ihren Standort durch einige Bedingungen einzuschränken, die indiziert werden können. Sie können das ganz einfach tun, da Sie wahrscheinlich nicht jemanden aus den USA zu jemandem in Paris als nächstgelegenen Standort auflisten möchten.

Mit nur einer kleinen Änderung an der RustamIS-Abfrage können Sie die meisten irrelevanten Orte eliminieren.

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

Sie haben also ein Rechteck definiert, in dem Sie nach den nächstgelegenen Personen suchen möchten.