如何在SQL距离计算公式中获取并使用表中的经纬度变量
解决SQL经纬度距离计算的变量替换问题
核心替换逻辑
直接对应公式里的占位符替换成你自己的数据即可:
$lat/$long:你要作为基准的目标经纬度(比如想找离某个城市10公里内的区域,就填这个城市的经纬度)LatOnTable/LongOnTable:你数据表中存储每个区域经纬度的字段名(从你的表结构截图来看,替换成表中实际的纬度、经度字段,比如lat和lng)yourTable:替换成你的数据表名称
示例SQL(适配你的表结构)
假设你的表叫regions,纬度字段是latitude,经度字段是longitude,要找离「北纬39.9042,东经116.4074」50公里内的区域,SQL代码如下:
SELECT *, (6371 * 2 * ASIN(SQRT( POWER(SIN((39.9042 - latitude) * pi()/180 / 2), 2) + COS(39.9042 * pi()/180) * COS(latitude * pi()/180) * POWER(SIN((116.4074 - longitude) * pi()/180 / 2), 2) ))) AS distance FROM regions HAVING distance <= 50 ORDER BY distance ASC;
关键调整说明
- 单位切换:如果要算英里,把公式里的
6371(地球半径公里数)换成3956(地球半径英里数),同时调整HAVING里的距离阈值(比如<=10就是10英里) - 字段匹配:确保
latitude和longitude完全对应你表中的字段名,避免拼写错误 - 基准点修改:把
39.9042和116.4074换成你实际要查询的基准经纬度
内容的提问来源于stack exchange,提问作者NoIdeaWhatImDoing
相关产品推荐
相关产品推荐

