当前位置: 首页 > article >正文

mysql8计算商家距离,按照由近及远排序

要计算商家距离并按照距离排序,可以使用MySQL 8中的空间函数和索引。以下是一个例子:

  1. 创建商家表
    CREATE TABLE merchants (
      id INT AUTO_INCREMENT PRIMARY KEY,
      name VARCHAR(50),
      location POINT,
      SPATIAL INDEX (location)
    ) Engine=InnoDB;
    

  2. 插入商家数据
    INSERT INTO merchants (name, location) VALUES
    ('商家A', ST_PointFromText('POINT(120.1435 30.2567)')),
    ('商家B', ST_PointFromText('POINT(120.1723 30.3249)')),
    ('商家C', ST_PointFromText('POINT(120.0674 30.2987)')),
    ('商家D', ST_PointFromText('POINT(119.9876 30.1459)')),
    ('商家E', ST_PointFromText('POINT(120.0452 30.1243)'));
    

  3. 查询距离最近的商家
    #默认是米
    SELECT id, name, ST_Distance_Sphere(location, ST_PointFromText('POINT(120.1325 30.2678)')) AS distance
    FROM merchants
    ORDER BY distance ASC;
    
    # 把米转换成公里
    SELECT id, name, CONCAT(ROUND(ST_Distance_Sphere(location, ST_PointFromText('POINT(113.597219 34.783522)'))/1000,2),'公里') AS distance
    FROM merchants
    ORDER BY distance ASC;
    

    在此示例中,ST_Distance_Sphere()函数用于计算两个点之间的球面距离(单位为米)。查询将返回距离指定坐标最近的商家,并按距离从近到远排序。

    注意:为了使此查询更有效率,需要使用空间索引idx_location

  4. 如果在添加索引时,出现了如下错误:All parts of a SPATIAL index must be NOT NULL

  5. 请执行如下语句:

    ALTER TABLE merchants MODIFY location point NOT NULL;
    ALTER TABLE merchants ADD SPATIAL INDEX (location);


http://www.kler.cn/a/6923.html

相关文章:

  • Figma中文网:UI设计师的新资源宝库
  • 如何在项目中用elementui实现分页器功能
  • H.265流媒体播放器EasyPlayer.js网页直播/点播播放器WebGL: CONTEXT_LOST_WEBGL错误引发的原因
  • Python 人脸检测:使用 Dlib 和 OpenCV
  • 七、箭头函数及简写、arguments、剩余参数、展开运算符、解构数组与对象、数组常见方法(forEach、map、join、reduce)
  • VMware 中 虚拟机【Linux系统】固定 ip 访问
  • Hadoop分布式集群安装部署(Redhat 6.4 64位操作系统)
  • 【蓝桥杯嵌入式】蓝桥杯第十二届省赛程序真题,真题分析与代码讲解
  • 新办林业调查设计资质需要符合什么条件,多久能办下来?
  • 【云原生进阶之容器】第五章容器运行时5.4--容器运行时之Firecracker
  • 使用Nginx代理访问服务器的.mp4文件,并使用Vue播放
  • 鲁大师2023年Q1季度电动车报告:九号独占八榜,差异化竞争完成产品破圈
  • Leetcode.404 左叶子之和
  • PCB技巧(二)
  • Python基础(一)
  • 【C语言】关于我回头学的那些基础语法(一)
  • IntelliJ IDEA 2023.1 最新变化
  • 【数据中心】能效诊断和升级改造提高PUE能源利用效率
  • Type javax.servlet.http.HttpServletRequest not present
  • 安全防御 --- 入侵检测 --- IDS、IPS
  • 将Mircrosoft Store下载的Ubuntu安装到指定位置方法,同时解决“你需要来自System的权限才能对此文件进行更改”问题
  • android framework-zygote进程
  • 计算机网络复习笔记(二)体系结构
  • 桌面端编程之精品课程
  • 【Python】轻松掌握基础语法(一)
  • 买卖股票的最佳时机