美文网首页
查询最近的10家店铺和查询附近10千米以内的店铺的SQL写法

查询最近的10家店铺和查询附近10千米以内的店铺的SQL写法

作者: Slience无言 | 来源:发表于2016-12-30 18:08 被阅读0次

    查询最近10家

    注意我这里没用加limit,纯SQL记得加上

    SELECT * , (round(6367000 * 2 * asin(
    sqrt(pow(sin(((t_shop.lat *
            pi()
        ) / 180 -
        23 * pi()
    ) / 180) / 2), 2) + cos(
        (23 * pi()) / 180) *
    cos((t_shop.lat * pi()) /
        180) * pow(sin(((
            t_shop.lon *
            pi()) /
        180 - (113 *
            pi()) /
        180) / 2), 2)))))
    AS distance FROM t_shop ORDER BY distance ASC
    

    上述代码中出现23和113的地方需要替换成你自己用户的坐标,t_shop.lon和t_shop.lat分别是已经存在数据库中的店铺的经纬度

    查询附近10千米以内的店铺

    select * from Shop where sqrt((((:lon - lon) *
        PI() * 12656 * cos(((:lat + lat) /
            2) * PI() / 180) /
        180) * ((:lon - lon) *
        PI() * 12656 * cos(((:lat + lat) /
            2) * PI() / 180) /
        180)) + (((:lat - lat) *
        PI() * 12656 / 180) * (
        (: lat - lat) * PI() *
        12656 / 180))) < :kilometer
    

    出现:lon的地方需要替换成你自己用户的经度,出现:lat替换成纬度,:kilometer替换成查询范围,如果是10千米就填10,lat和lon分别代表以及存在数据库中的经纬度,Shop是表名

    相关文章

      网友评论

          本文标题:查询最近的10家店铺和查询附近10千米以内的店铺的SQL写法

          本文链接:https://www.haomeiwen.com/subject/jtnmvttx.html