经度纬度是两个字段储存 mysql中两张表的经纬度怎么用ST_Distance 计算距离最近的
时间: 2023-07-23 10:08:47 浏览: 173
MYSQL 关于两个经纬度之间的距离由近及远排序
假设有两张表 `table1` 和 `table2`,它们分别存储了一些地点的经纬度信息,现在需要计算距离最近的两个地点之间的距离和它们的位置信息。可以使用以下 SQL 语句实现:
```
SELECT
t1.id AS id1,
t2.id AS id2,
ST_Distance(Point(t1.longitude, t1.latitude), Point(t2.longitude, t2.latitude)) AS distance
FROM
table1 t1
CROSS JOIN table2 t2
WHERE
t1.id <> t2.id
ORDER BY
distance ASC
LIMIT 1;
```
这里使用了 `CROSS JOIN` 将两张表的记录组合在一起,使用 `WHERE` 条件去掉了两个相同的地点的情况,使用 `ST_Distance` 计算了两个地点之间的距离,并使用 `ORDER BY` 按照距离升序排序,最后使用 `LIMIT` 限制只返回一条记录。这样就可以得到距离最近的两个地点的 ID 和它们之间的距离。如果需要得到地点的其他信息,可以在 `SELECT` 语句中添加相应的字段。
阅读全文