我用它来找到最近的点
SELECT
id,
ST_Distance(
POINT(52.760667210533,-7.22646337599035),
geo_point
) as distance
from Points
order by distance limit 1
我有一个临时表 TempPoints ,其中包含所有候选点,我想将它们规范化到 OSM 节点上,但数量很多,所以我需要一个查询来在一次调用中解决所有这些问题。 UNION 不会让我使用 order by,并且我的数据库原始查询接口(interface)不会让我只触发一系列由“;”分隔的查询。 临时表有纬度和经度,但也可以很容易地有一个点。我该怎么走
select id,NearestTo(TempPoint.geo_point,Points) from TempPoints;
编辑:我可以将大型联合查询中的每个选择括起来,这解决了我的问题。
我仍然希望能够加入最近的行。
最佳答案
这可能对你有用:
SELECT t.id as tid, p.id as pid, p.geo_point
FROM TempPoint t
JOIN Points p ON p.id = (
SELECT p1.id
FROM Points p1
ORDER BY ST_Distance(p1.geo_point, t.geo_point)
LIMIT 1
)
关于mysql - 为表中的每一行选择最近的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50199153/