mysql - 将两个查询组合成单半径搜索以进行映射

标签 mysql

如果可能的话,我需要一些帮助将这些查询合并为一个。用户将在 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/

相关文章:

mysql - 查询自动排除没有条目的记录

php - 使用 if 条件计算两列中的相同记录

php - 使用 for 每个循环插入数据并忽略没有数据的文本字段

php - 删除具有两个重复值的值,无论它们位于哪一列

html - 使用 MySQL 查找 HTML 中的电子邮件链接

php - 连接表中唯一的一对值

mysql - 如何在mysql上使用 'script/install'

mysql - SQL 计数功能不适用于连接查询

MySQL查询获取连接表B的计数小于表A中特定字段的值

java - 当库提取到可运行的 jar 中时 JDBC 运行良好,但当它们刚刚打包时则运行不佳