微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

mysql怎么查询圆形内数据

MysqL中,查询圆形内的数据可以使用以下方法
1. 使用经纬度计算距离的方式:

SELECT *
FROM table_name
WHERE 

    ACOS(SIN(radians(lat))  SIN(radians(target_lat)) + COS(radians(lat))  COS(radians(target_lat)) 

     COS(radians(target_lng) - radians(lng)))  6371 <= radius;

其中,table_name是你的表名,latlng分别是存储纬度和经度的字段名,target_lattarget_lng是目标圆心的纬度和经度,radius查询的半径(单位为千米)。
2. 使用地理空间索引的方式:
首先,确保表中的经纬度字段创建了地理空间索引。例如:

ALTER TABLE table_name ADD COLUMN location POINT;
UPDATE table_name SET location = POINT(lng, lat);
CREATE SPATIAL INDEX idx_location ON table_name(location);

然后,使用以下查询语句:

SELECT *
FROM table_name
WHERE ST_distance_Sphere(location, POINT(target_lng, target_lat)) <= radius * 1000;

其中,table_name是你的表名,location是存储经纬度的字段名,target_lattarget_lng是目标圆心的纬度和经度,radius查询的半径(单位为千米)。
注意:第二种方法需要MysqL版本5.7以上,且启用了地理空间索引功能

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐