gpt4 book ai didi

mysql - 从sql查询中的特定纬度和经度查找所有最近的带有纬度和经度的邮政编码

转载 作者:行者123 更新时间:2023-11-29 03:33:22 24 4
gpt4 key购买 nike

我有一个数据库表,其中有 4 列。

1. id
2. person_name
3. country
4. zip_code

现在我想要所有的邮政编码及其真实的纬度和经度,它们来自给定的经纬度 10 英里的给定半径。

假设我的纬度和经度是(19.24947300,72.85681400),距离是10 英里,那么我应该使用什么SQL 查询来返回所有最近的邮政编码及其经纬度。

我只有下面的查询

SELECT ((ACOS(SIN($lat * PI() / 180) * SIN(lat * PI() / 180) + COS($lat * PI() 
/ 180) * COS(lat * PI() / 180) * COS(($lon – lon) * PI() / 180)) * 180 / PI()) * 60 *
1.1515) AS `distance` FROM `members` HAVING `distance`<=’10’ ORDER BY `distance` ASC

但它需要表中所有邮政编码的经纬度,但我希望在运行时得到它们。

最佳答案

我不确定我明白你的意思

But it requires the lat longs of all zip codes in the table but I want them in run time.

由于您需要 SQL 查询,我假设您有一个包含每个邮政编码的纬度和经度的表。

您可能不应该在 SQL 查询中做所有这些数学运算。我会首先拉出以您查询的位置为中心的 10 英里 x 10 英里平方范围内的每个邮政编码,然后,如果您真的只需要 10 英里半径内的邮政编码,请检查您的程序(我假设您正在使用PHP,因为你有以 $ 开头的变量)。

SELECT zip, latitude, longitude FROM zip_positions
WHERE latitude > 19.24947300 - DISTANCE and latitude < 19.24947300 + DISTANCE
AND longitude > 72.85681400 - DISTANCE and longitude < 72.85681400 + DISTANCE

其中 DISTANCE 大致相当于您必须计算的 10 英里纬度/经度。

然后,如果需要,您可以在 PHP(或您使用的任何语言)中检查每个结果,看看它是否确实距离查询点不到 10 英里。关于如何将纬度和经度精确地转换为以英里为单位的距离,我无法帮助您。

关于mysql - 从sql查询中的特定纬度和经度查找所有最近的带有纬度和经度的邮政编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27144833/

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