MySQL根据经纬度和距离查询最近的数据

[lat]:输入的纬度
[lon]:输入的经度
[distance]:查询距离内的数据,单位m
SELECT
    *
FROM
    (
        SELECT
            id
            lon,
            lat,
            vin,
            ROUND(
                6378.138 * 2 * ASIN(
                    SQRT(
                        POW(
                            SIN(
                                (
                                    [lat] * PI() / 180 - lat* PI() / 180
                                ) / 2
                            ),
                            2
                        ) + COS([lat] * PI() / 180) * COS(lat* PI() / 180) * POW(
                            SIN(
                                (
                                    [lon] * PI() / 180 - lon* PI() / 180
                                ) / 2
                            ),
                            2
                        )
                    )
                ) * 1000
            ) AS distance
        FROM
            tableName
    ) AS a
WHERE
    a.distance < [distance]
ORDER BY
    a.distance

 

修改中括号"[]"处参数即可

 

posted @ 2023-02-27 17:45  余额一个亿  阅读(459)  评论(0)    收藏  举报