如果可能的话,我需要一些帮助将这些查询合并为一个。用户将在 from 中输入邮政编码。返回应该是邮政编码和距离。
表结构:
邮政编码 |状态|纬度 |经度
SELECT latitude,
longitude
INTO @latitude, @longitude
FROM zipcodes
WHERE `zipcode` = 36101
LIMIT 1;
SELECT zipcode,
( 3959 * Acos(Cos(Radians(@latitude)) * Cos(Radians(latitude)) * Cos(
Radians(longitude) - Radians(@longitude)) +
Sin(Radians(@latitude)) * Sin(Radians(latitude)))
) AS
distance
FROM zipcodes
HAVING distance < 10
ORDER BY distance
我的解决方案 我最终将这些作为两个单独的查询进行。
最佳答案
如果您可以尝试以下方法:
SELECT zipcode,
( 3959 * Acos(Cos(Radians(A.sel_latitude)) * Cos(Radians(latitude)) * Cos(
Radians(longitude) - Radians(A.sel_longitude)) +
Sin(Radians(A.sel_latitude)) * Sin(Radians(latitude)))
) AS
distance
FROM
zipcodes,
(
SELECT
sel_latitude,
sel_longitude
FROM
zipcodes
WHERE
`zipcode` = 36101
LIMIT 1
) AS A
HAVING distance < 10
ORDER BY distance;
希望它能在某种程度上有所帮助
关于mysql - 将两个查询组合成单半径搜索以进行映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27483386/