mysql 数据库表按照经纬度筛选数据,可以找到临近的几个城市信息,非常好用

该查询结合了多个省份的经纬度数据,通过ST_Distance函数计算与指定点(39.910925, 116.413384)的距离,并按距离排序,返回最近的6个结果。涉及的数据表为pk_latitude_longitude,筛选条件为is_delete=0且area_code匹配中国省级行政区代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

select t.le_id,t.area_code,t.area_name,t.longitude,t.latitude,
st_distance (POINT (latitude,longitude),POINT(‘39.910925’,‘116.413384’)) * 111195 AS distance from(
select l.le_id,l.area_code,l.area_name,l.longitude,l.latitude from pk_latitude_longitude l where l.area_code like ‘110000%’ and l.is_delete = 0
union all
select l.le_id,l.area_code,l.area_name,l.longitude,l.latitude from pk_latitude_longitude l where l.area_code like ‘120000%’ and l.is_delete = 0
union all
select l.le_id,l.area_code,l.area_name,l.longitude,l.latitude from pk_latitude_longitude l where l.area_code like ‘13__00%’ and l.area_code != ‘130000’ and l.is_delete = 0
union all
select l.le_id,l.area_code,l.area_name,l.longitude,l.latitude from pk_latitude_longitude l where l.area_code like ‘14__00%’ and l.area_code != ‘140000’ and l.is_delete = 0
union all
select l.le_id,l.area_code,l.area_name,l.longitude,l.latitude from pk_latitude_longitude l where l.area_code like ‘15__00%’ and l.area_code != ‘150000’ and l.is_delete = 0
union all
select l.le_id,l.area_code,l.area_name,l.longitude,l.latitude from pk_latitude_longitude l where l.area_code like ‘21__00%’ and l.area_code != ‘210000’ and l.is_delete = 0
union all
select l.le_id,l.area_code,l.area_name,l.longitude,l.latitude from pk_latitude_longitude l where l.area_code like ‘22__00%’ and l.area_code != ‘220000’ and l.is_delete = 0
union all
select l.le_id,l.area_code,l.area_name,l.longitude,l.latitude from pk_latitude_longitude l where l.area_code like ‘23__00%’ and l.area_code != ‘230000’ and l.is_delete = 0
union all
select l.le_id,l.area_code,l.area_name,l.longitude,l.latitude from pk_latitude_longitude l where l.area_code like ‘310000%’ and l.is_delete = 0
union all
select l.le_id,l.area_code,l.area_name,l.longitude,l.latitude from pk_latitude_longitude l where l.area_code like ‘32__00%’ and l.area_code != ‘320000’ and l.is_delete = 0
union all
select l.le_id,l.area_code,l.area_name,l.longitude,l.latitude from pk_latitude_longitude l where l.area_code like ‘33__00%’ and l.area_code != ‘330000’ and l.is_delete = 0
union all
select l.le_id,l.area_code,l.area_name,l.longitude,l.latitude from pk_latitude_longitude l where l.area_code like ‘34__00%’ and l.area_code != ‘340000’ and l.is_delete = 0
union all
select l.le_id,l.area_code,l.area_name,l.longitude,l.latitude from pk_latitude_longitude l where l.area_code like ‘35__00%’ and l.area_code != ‘350000’ and l.is_delete = 0
union all
select l.le_id,l.area_code,l.area_name,l.longitude,l.latitude from pk_latitude_longitude l where l.area_code like ‘36__00%’ and l.area_code != ‘360000’ and l.is_delete = 0
union all
select l.le_id,l.area_code,l.area_name,l.longitude,l.latitude from pk_latitude_longitude l where l.area_code like ‘37__00%’ and l.area_code != ‘370000’ and l.is_delete = 0
union all
select l.le_id,l.area_code,l.area_name,l.longitude,l.latitude from pk_latitude_longitude l where l.area_code like ‘41__00%’ and l.area_code != ‘410000’ and l.is_delete = 0
union all
select l.le_id,l.area_code,l.area_name,l.longitude,l.latitude from pk_latitude_longitude l where l.area_code like ‘42__00%’ and l.area_code != '420000’and l.is_delete = 0
union all
select l.le_id,l.area_code,l.area_name,l.longitude,l.latitude from pk_latitude_longitude l where l.area_code like ‘43__00%’ and l.area_code != '430000’and l.is_delete = 0
union all
select l.le_id,l.area_code,l.area_name,l.longitude,l.latitude from pk_latitude_longitude l where l.area_code like ‘44__00%’ and l.area_code != '440000’and l.is_delete = 0
union all
select l.le_id,l.area_code,l.area_name,l.longitude,l.latitude from pk_latitude_longitude l where l.area_code like ‘45__00%’ and l.area_code != '450000’and l.is_delete = 0
union all
select l.le_id,l.area_code,l.area_name,l.longitude,l.latitude from pk_latitude_longitude l where l.area_code like ‘46__00%’ and l.area_code != '460000’and l.is_delete = 0
union all
select l.le_id,l.area_code,l.area_name,l.longitude,l.latitude from pk_latitude_longitude l where l.area_code like ‘500000%’ and l.is_delete = 0
union all
select l.le_id,l.area_code,l.area_name,l.longitude,l.latitude from pk_latitude_longitude l where l.area_code like ‘51__00%’ and l.area_code != ‘510000’ and l.is_delete = 0
union all
select l.le_id,l.area_code,l.area_name,l.longitude,l.latitude from pk_latitude_longitude l where l.area_code like ‘52__00%’ and l.area_code != ‘520000’ and l.is_delete = 0
union all
select l.le_id,l.area_code,l.area_name,l.longitude,l.latitude from pk_latitude_longitude l where l.area_code like ‘53__00%’ and l.area_code != ‘530000’ and l.is_delete = 0
union all
select l.le_id,l.area_code,l.area_name,l.longitude,l.latitude from pk_latitude_longitude l where l.area_code like ‘54__00%’ and l.area_code != ‘540000’ and l.is_delete = 0
union all
select l.le_id,l.area_code,l.area_name,l.longitude,l.latitude from pk_latitude_longitude l where l.area_code like ‘61__00%’ and l.area_code != ‘610000’ and l.is_delete = 0
union all
select l.le_id,l.area_code,l.area_name,l.longitude,l.latitude from pk_latitude_longitude l where l.area_code like ‘62__00%’ and l.area_code != ‘620000’ and l.is_delete = 0
union all
select l.le_id,l.area_code,l.area_name,l.longitude,l.latitude from pk_latitude_longitude l where l.area_code like ‘63__00%’ and l.area_code != ‘630000’ and l.is_delete = 0
union ALL
select l.le_id,l.area_code,l.area_name,l.longitude,l.latitude from pk_latitude_longitude l where l.area_code like ‘64__00%’ and l.area_code != ‘640000’ and l.is_delete = 0
union ALL
select l.le_id,l.area_code,l.area_name,l.longitude,l.latitude from pk_latitude_longitude l where l.area_code like ‘65__00%’ and l.area_code != ‘650000’ and l.is_delete = 0
union ALL
select l.le_id,l.area_code,l.area_name,l.longitude,l.latitude from pk_latitude_longitude l where l.area_code like ‘810000%’ and l.is_delete = 0
union ALL
select l.le_id,l.area_code,l.area_name,l.longitude,l.latitude from pk_latitude_longitude l where l.area_code like ‘820000%’ and l.is_delete = 0

)t order by distance ASC LIMIT 6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值