mysql - 为表格中的每一行选择最近的点
问题描述
我用它来找到最近的点
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,我的 DB 原始查询界面不会让我只触发一系列由“;”分隔的查询。临时表有 lat 和 lon,但也可以很容易地有一个 POINT。我怎么去
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
)
推荐阅读
- linux - 从 linux 机器复制已安装的二进制文件
- scrapy - Scrapy 在大的 url 列表上突然关闭
- python - 培训师班 CNTK 的问题
- type-conversion - VHDL 错误:中缀表达式中的类型不明确;reg_buff 或 data_buff
- nginx - Nginx 配置问题 - 无法从 NodeJS 测试程序连接到 S3 兼容存储
- c# - 我可以将第三个字段添加到 .NET ListItem 呈现的对象吗?
- c++ - 停止喷涂并保持原位
- java - 使 XSD 属性接受两种类型(xs:string 和 xs:long)的最优雅方法?
- node.js - 获取节点中特定时区的 UTC 偏移量和 DST 信息?
- vba - 访问 - VBA 无效使用 null