sql 使用最近的纬度和经度坐标(MySQL和SQLite)进行SQL排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 使用最近的纬度和经度坐标(MySQL和SQLite)进行SQL排序相关的知识,希望对你有一定的参考价值。

---
METHOD 1

This should roughly sort the items on distance in MySQL, and should work in SQLite.
If you need to sort them preciser, you could try using the Pythagorean theorem (a^2 + b^2 = c^2) to get the exact distance.
---
SELECT *
FROM table
ORDER BY ((lat-$user_lat)*(lat-$user_lat)) + ((lng - $user_lng)*(lng - $user_lng)) ASC

---
METHOD 2
---
SELECT
    id, (
      6371 * acos (
      cos ( radians($user_lat) )
      * cos( radians( lat ) )
      * cos( radians( lng ) - radians($user_lng) )
      + sin ( radians($user_lat) )
      * sin( radians( lat ) )
    )
) AS distance
FROM table
HAVING distance < 30
ORDER BY distance
LIMIT 0 , 20;

以上是关于sql 使用最近的纬度和经度坐标(MySQL和SQLite)进行SQL排序的主要内容,如果未能解决你的问题,请参考以下文章

MYSQL查询对GPS坐标进行排序

一个纬度/经度坐标与使用 SQL 的固定坐标之间的近似距离

使用纬度-经度返回用户位置可用的最近地点?

sql怎么将一系列点经纬度坐标匹配到某市

如何从当前位置找到最近的经纬度?

用于查找使用纬度和经度之间的距离的Sql返回错误的距离