MySQL距离计算

时间:2014-05-30 08:51:12

标签: mysql

我目前运行的查询返回一个距离列,显示距离给定点的英里距离

SELECT user_id, 
    SQRT(
        POW(69.1 * (lat_col - 60.454509), 2) +
        POW(69.1 * (9.667969 - lng_col) * COS(lat_col / 57.3), 2)
    ) AS distance
    FROM users ORDER BY distance ASC

返回

user_id | distance
-------------------
1           27
56          29
8           32
32          45
4           56
6           64

问题是这个距离值以英里为单位,我需要它以公里为单位。我可以在php中执行此操作,但我希望通过使用当前的SQL来保持简单,快速和干净。

3 个答案:

答案 0 :(得分:0)

1英里= 1.609344公里所以我们可以改变距离:

SELECT user_id, 
    SQRT(
        POW(69.1 * (lat_col - 60.454509), 2) +
        POW(69.1 * (9.667969 - lng_col) * COS(lat_col / 57.3), 2)
    ) * 1.609344 AS distance
    FROM users ORDER BY distance ASC

答案 1 :(得分:0)

度经度平均为111公里,取决于何处。

答案 2 :(得分:0)

1 Mile = 1.60934 Kilometer。因此,您只需将距离计算乘以1.60934

即可
SQRT(
    POW(69.1 * (lat_col - 60.454509), 2) +
    POW(69.1 * (9.667969 - lng_col) * COS(lat_col / 57.3), 2)
) * 1.60934 AS distance