SQL语句计算经纬度距离

本文介绍如何使用SQL语句计算地球表面上两点(基于经纬度)之间的距离,并进行由近及远的排序。示例查询展示了查询北纬32度,东经121度周围100公里内的数据,同时提供了创建、查看和删除索引的方法。
摘要由CSDN通过智能技术生成

从mysql中查询地理坐标

SELECT  
  id, (  
    6371 * acos (  
      cos ( radians(78.3232) )  
      * cos( radians( 数据库纬度字段) )  
      * cos( radians( 数据库经度字段) - radians(65.3234) )  
      + sin ( radians(78.3232) )  
      * sin( radians( 数据库纬度字段 ) )
     )
   ) AS distance
FROM tb_hotel 
HAVING distance < 0.4 
ORDER BY distance 
LIMIT 0 , 20;

上述"distance"字段, 数据单位为公里 ( KM ) 1公里=1000米

	3.SELECT id, ( 6371* acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < 25  ORDER BY id LIMIT 20

SELECT
(
6371 * acos(
cos(radians(29.490295))
   * cos(radians(29.615467)) 
   * cos(radians(106.581515) - radians(106.486654)	) 
   + sin(radians(29.490295)) 
   * sin(radians(29.615467))
     )
)*1000 AS distance

一般都是按千米算

latitude  纬度
longitude  经度


查询语句
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值