gpt4 book ai didi

mysql - SQL 需要根据具有最小/最大距离约束的纬度/经度获取位置的子集

转载 作者:行者123 更新时间:2023-11-28 23:30:15 25 4
gpt4 key购买 nike

我有一个包含 500 个位置记录的 MySQL 表,其结构类似于:

id, name, lat, long

纬度和经度是十进制( float )位置值。

我的需求是返回一个随机的 100 条记录集,这些记录集之间的距离最小为 200 米,最大为 500 米。我熟悉使用大圆公式来计算两点之间的距离。但是,我不知道如何编写 select 语句来比较所有位置以确保随机选择的 100 个的距离要求?任何想法或帮助将不胜感激。我唯一的工具是 MySQL 数据库,因此解决方案需要用 MySQL SQL 编写。先感谢您。

最佳答案

SELECT * 
FROM (
SELECT p.latitude1 AS latitude1, p.longitude1 AS longitude1, p.latitude2 AS latitude2, p.longitude2 AS longitude2,
(((ACOS(SIN((latitude2*PI()/180)) * SIN((latitude1*PI()/180))+COS((latitude2*PI()/180)) * COS((latitude1*PI()/180)) * COS(((longitude2- longitude1)* PI()/180))))*180/PI())*60*1.1515) AS distance
FROM places p
)
WHERE distance > 200 AND distance < 500
ORDER BY RAND()
LIMIT 100

关于mysql - SQL 需要根据具有最小/最大距离约束的纬度/经度获取位置的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37579286/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com