MySQL按照经纬度排序 查询出商家信息

首先自己写公式算法,这个我们 就不写了,pass~

我们懒人使用MySQL自带的函数

ST_Distance_Sphere 是 MySQL
数据库中用于计算两个地理点之间球面距离的地理空间函数。这个函数返回两个点之间的距离,单位是米。它特别适用于计算地球上两点之间的近似距离,例如,可以用来计算两个地理位置(如两个商家的位置)之间的距离。
如果你的MySQL版本支持地理空间索引(5.7及以上),你可以使用ST_Distance函数来更高效地进行查询:

先看查询出的结果示例:

在这里插入图片描述
使用语法:ST_Distance_Sphere(point1, point2)

ST_Distance_Sphere的第一个参数是你要查询的点(商家的位置),第二个参数是参考点(你的查询点)。
point1: 第一个点,使用 POINT 构造函数定义,包含经度和纬度。
point2: 第二个点,同样使用 POINT 构造函数定义。
返回两个点之间的距离,单位是米。

示例代码(看代码直接跳这):

SELECT
    s.id AS storeId,
    s.`name` AS storeName,
    s.longitude AS longitude,
    s.latitude AS latitude,
    ST_Distance_Sphere(
        POINT(s.longitude, s.latitude), 
        POINT(108.43, 22.81)
    ) AS distance
FROM
    t_merchants s 
WHERE
    1=1 #等等条件...
ORDER BY
    distance ASC
注意事项
  • 精度:ST_Distance_Sphere 提供的是近似值,对于精确的测量,可能需要更复杂的地理空间分析工具。
  • 性能: 对于大量数据的查询,使用地理空间函数可能会影响性能。在这种情况下,考虑使用索引或其他优化技术。
  • 球面计算:这个函数假设地球是一个完美的球体,实际上地球是一个扁球体,因此对于非常精确的测量,这种近似可能会引入误差。
  • 适用场景
    • 地理位置服务:用于计算用户与特定地点之间的距离。
    • 物流和配送:确定最近的配送点或仓库。
    • 旅游和导航:计算旅行路线的距离。

ST_Distance_Sphere 是处理地理空间数据时非常有用的工具,尤其是在需要快速计算距离的场景中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哒不溜-w

别给我打手续费太贵

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值