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

查询最近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是表名

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.dSYM你是如何分析的? 2.多线程有哪几种?你更倾向于哪一种? 3.单例弊端? 4.如何把异步线程转换成同步...
    xiaon阅读 1,521评论 0 2
  • { 24、Sqlite数据库 1、存储大数据量,增删改查,常见管理系统:Oracle、MSSQLServer、DB...
    CYC666阅读 961评论 0 1
  • 众所周知地球是一个不规则椭圆体,GIS中的坐标系定义由基准面和地图投影两组参数确定,而基准面的定义则由特定椭球体及...
    亮仔菲个阅读 14,056评论 1 8
  • 题目:将25兆的数据读入内存中,并且根据数据中经度和维度,计算距离,将距离小于10千米的地址存入内存中,速度越快越...
    末央酒阅读 1,402评论 0 2
  • Neil Zhu,简书ID Not_GOD,University AI 创始人 & Chief Scientist...
    朱小虎XiaohuZhu阅读 13,232评论 0 5