福田住房和建设局网站官网,浙江专业网站seo,怎样创建网页,河北网络推广要计算商家距离并按照距离排序#xff0c;可以使用MySQL 8中的空间函数和索引。以下是一个例子#xff1a;
创建商家表 CREATE TABLE merchants (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50),location POINT,SPATIAL INDEX (location)
) EngineInnoDB;插入商家数据…要计算商家距离并按照距离排序可以使用MySQL 8中的空间函数和索引。以下是一个例子
创建商家表 CREATE TABLE merchants (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50),location POINT,SPATIAL INDEX (location)
) EngineInnoDB;插入商家数据 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)));查询距离最近的商家 #默认是米
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。 如果在添加索引时出现了如下错误All parts of a SPATIAL index must be NOT NULL 请执行如下语句 ALTER TABLE merchants MODIFY location point NOT NULL;
ALTER TABLE merchants ADD SPATIAL INDEX (location);